LINUX.ORG.RU
решено ФорумTalks

Соберу какую-нибудь фигню в виде универсального бинарника

 , ,


6

2

Ещё не выполненные заказы:

Opensmtpd, Pidgin, Tor Browser для 64-бит, BOINC Client, rpcs3.

Выполненные заказы:

  • Firefox 45.9.0. Системные требования: любой линукс. tar.bz2 для 32-бит/64-бит
  • Tor Browser 7.0a1. Системные требования: любой линукс. tar.xz для 32-бит/64-бит
  • PCSX2 1.4.0 - эмулятор PlayStation 2. Для работы требует файлы BIOS приставки. Запускать лаунчером launch_pcsx2.sh. Системные требования: любой линукс, GPU с поддержкой OpenGL 3. tar.gz для 32-бит
  • Dosbox-daum. Dosbox - популярный эмулятор DOS. Патчи Daum привносят поддержку сети NE2000, матричных принтеров, эмуляцию Voodoo и Roland (нужен демон Munt, файлы данных Роланда, и права на /dev/snd/seq), и т.д.
    Распаковать в юзерспейс, запускать кликом по dosbox.sh. Эмулятор использует пропатченный libSDL (лежит в архиве), а скрипт его подцепляет. tar.gz для 32-бит
  • Neverball - логическая игра про катание шарика в 3D-пространстве. Красивая, стильная, при этом имеет низкие системные требования! tar.xz для 32-бит
  • Syobon Action (больше известна как Neko Mario) - tar.gz для 32/64 бит
  • Лаунчер для игры Minecraft. Системные требования: любой линукс, Java. RPM 64-бит (альфа), DEB 32-бит, 64-бит (бета), tar.gz для 32/64 бит

Другое:

  • libudev1 - DEB-пакет для Ubuntu 12.04 64-бит
  • Glibc 2.17 для RHEL/CentOS 5. Это мощный апгрейд с релиза 2.5! Обновите Glibc, установите проприетарный драйвер видеокарты, и у вас запустится Steam! Для стима и скайпа также нужен SSE2 в процессоре. RPM для 32-бит

    Моя сборка не идеальна. 1). В ней отсутствует /etc/ld.so.conf, но и без него работает. 2). Я «не осилил» починить скрипты Post Install, поэтому необходимо вручную перегенерировать локали:

    localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
    localedef -v -c -i ru_RU -f UTF-8 ru_RU.UTF-8
    
  • Freetype с поддержкой субпиксельного сглаживания для RHEL/CentOS 5. После установки необходимо включить это сглаживание в настройках GNOME или KDE (вы должны знать где). RPM для 32-бит
  • Дружественный проект: Qt 4.7 для RHEL/CentOS 5 (включая QtWebkit и QtCreator). Позволяет запустить Skype. Также для скайпа понадобится SSE2 в процессоре, и PulseAudio из EPEL (или apulse).

Новости:
20.06.2017: Спустя год после выкладывания сборки PCSX2 1.4.0, поправил в ней плагин Lilypad. В прошлый раз он не работал.
14.06.2017:

  • 64-битная версия Tor Browser не запускается у большинства пользователей :-( Выяснилось что Tor, начиная с версии 3.0, зависит от libcap. На моей билд-ферме - старая версия libcap.so.1, а у вас на компах .so.2. Переделаю.
  • Обновил Firefox с 45.6 до 45.9. Применил совет, благодаря которому в моей сборке теперь 60 файлов, а не 5600. Всё ближе и ближе к идеалу!

    С версией 52.1 пока затык. Нужно статически слинковать с XCB-SHM, а я не знаю как.

15.02.2017: Собрал 64-битную версию Tor Browser. Для директории Browser/TorBrowser/Data необходимо дать права 600.
05.02.2017: Tor Browser 6.0.2 → 7.0a1. 64-битную версию всё ещё только собираюсь сделать.
28.12.2016: Обновил Firefox с 45.2.0esr до 45.6.0esr. Изменил некоторые умолчания:

  • Отключил Pocket
  • Включил скролл по нажатию средней кнопки мыши (вместо действия «Вставить», а то достало, промахнувшись по гиперссылке, случайно переходить по адресу из буфера. Вернуть можно в about:config, поискав autoscroll)
  • Отключил проверку на браузер по умолчанию (в сборке без DBus всё равно не работает, и этот вопрос спрашивают бесконечно)

10.07.2016: Обновил описание
05.07.2016: Добавил сборку Firefox 64-бит
29.06.2016: Добавил Tor Browser 6.0, и сборки Glibc и Freetype для RHEL/CentOS 5
22.06.2016: Firefox 38 ESR обновлён до 45 ESR.
___
Глава 1. Что случилось?

Несколько дней назад вышел интернет-мессенджер Pidgin 2.11. Зайдя на страницу программы, вы найдёте программу установки для Windows, пакет для macOS, и исходный код для Linux. А что насчёт бинарных файлов для Linux? Вам предложат перейти в репозиторий вашего дистрибутива Linux — там вы увидите версию 2.10.12.

Сколько потребуется ждать — неужели до нового релиза дистрибутива? Можно ли доверять этому стороннему репозиторию? А что если я хочу не обновиться, а наоборот, откатиться? Я только что установил последнюю версию Linux Mint, и в пиджине 2.11 «отвалился» мой самописный плагин!

Почему нам предлагают только исходный код? Почему готовые сборки существуют только для конкретных версий конкретных линуксов, а для моего самого любимого, но не самого популярного линукса нет PPA? Почему такого не бывает в Windows?

Глава 2. Как это может коснуться меня?

Слабая сторона Windows в том, что установка дополнительных программ замусоривает систему! Даже если вы удалите программу, после которой стало «всё тормозить», это может не помочь. И тогда — чистка реестра (сложный способ), или переустановка системы (простой способ, но можно по-неосторожности удалить коллекцию фоток за 10 лет. И тогда необходим визит к мастеру восстановления удалённых данных — за деньги).

Сильная сторона Linux — вы можете установить сколько угодно программ, и система будет быстро включаться и выключаться, как сразу после установки. Слабая сторона Linux: сложность установки программ. Вот вы скачали готовую сборку программы для линукса, но немного не для вашего линукса, и вы не можете её установить! Программу для Opensuse 42.1 в Ubuntu 14.10, или от Debian 9 - в Fedora 24. Даже сборку для Ubuntu 16.04 в 15.10 не можете!

Пример из личного опыта. Давным-давно, я скомпилировал программу в Ubuntu 10.10. Когда вышла Ubuntu 12.04, 4 библиотеки-зависимости поменялись, а старые отсутствовали в репозитории дистрибутива:

libbluetooth.so.3 → libbluetooth.so.4
libssl.so.0.9.8 → libssl.so.1.0.0
libopenal.so.0 → libopenal.so.1
libhal.so.1 → not found

Спустя 2 часа удовольствия, программа запустилась! Уверен что при попытке запустить её в 16.04 удовольствие длилось бы ещё дольше!

Глава 3. Как победить эту проблему?

Подумайте, эта проблема решаема? И если да, то как? Вот моё предложение:

А давайте создадим некий Default Linux, и будем собирать проприетарное ПО в нём, и только в нём? А открытое ПО – продолжим собирать как раньше?

Мало кто знает, но такой Default Linux — есть. Он называется CentOS (разрабатывается компанией Red Hat). Мегастабильный, энтерпрайзный линукс с долговременной поддержкой! Он настолько популярен в бизнесе, что совместимость с ним хотят иметь все остальные!

Разработчик CentOS обеспечивает обратную совместимость: программы для CentOS версии x работают в CentOS x+1. Эта совместимость называется LSB — Linux Standard Base. Дистрибутивы линукса Debian, Ubuntu, Fedora, Alt, Mageia и так далее, и так далее, и так далее — все совместимы с LSB на 100%.

Так почему же до сих пор находятся авторы проприетарного ПО, которые не собирают свои программы в CentOS, как того требует стандарт? Может быть, не знают. Может быть, знают, но сознательно плюют на стандарт: «а чё? У всех убунта, у меня тоже убунта. Вот я скомпилирую свою программу для Ubuntu, и у всех будет работать!». Дело в том, что разработчики Ubuntu не гарантируют возможность запуска программы для Ubuntu x в Ubuntu x+1.

Глава 4. Борцун с дискриминацией Линукса

Я решил что буду брать программы, исходный код которых доступен, и собирать их в CentOS 5 или 6. Выкладывать в формате RPM, DEB, tar.gz и репозиторий с GPG-ключом. Такие программы будут запускаться везде, иначе быть не может: LSB гарантирует, что в системе уже есть Xorg 7.1, GTK 2.10, libpng 1.2, libjpeg 62, libasound2 и libcups 1.3. Остальное будет прописано в зависимостях пакета, или вложено в архив tar.gz. В отдельных случаях будет применяться dlopen() для опциональных, но не обязательных зависимостей.

★★★★★

Последнее исправление: ZenitharChampion (всего исправлений: 44)
Ответ на: комментарий от ZenitharChampion

Собрать не могу

Жаль, ладно тогда.

Странно что сборки под Windows выходят почти каждый день а под линь только инструкции по сборке.

ozzee
()
Ответ на: комментарий от ozzee

Вот был бы default linux, были бы. Но его нет. По факту, это Ubuntu. По бумагам, это CentOS.

ZenitharChampion ★★★★★
() автор топика

Сборка программ под LSB очень простая:

  • Хотя в CentOS 5 GCC имеет версию 4.1, а в CentOS 6 - 4.4, в репозитории devtoolset доступны GCC версий 4.7 и 4.8. Это позволяет скомпилировать практически любую современную программу! Интересно, что когда программа будет собрана, в пакет/архив с ней не понадобится класть новый C++ Runtime (файл libstdc++.so.6) - магия!
  • В репозитории EPEL оказались последние версии cmake, ICU, Boost, wxWidgets и куча других либ и тулкитов! Устанавливать зависимости для сборки очень просто! Нет разве что сборок Python 2.7, GTK 2.24 и Qt 4.8, но это решается очень быстро.
  • После сборки, я прогоняю тест на совместимость с LSB, по результатам которого кладу не входящие в стандарт файлы библиотек в архив с программой (либо прописываю зависимости пакетов RPM И DEB). Также кладу скрипт запуска, используемый в большинстве игр для Linux: он определяет архитектуру проца, подцепляет либы из lib32/lib64, и назначает текущую директорию (для KDE).
ZenitharChampion ★★★★★
() автор топика

Valve на этом уже погорели, и теперь таскают с собой Steam Runtime размером 600 Мб, и представляющий собой бандл из самых часто используемых библиотек Ubuntu 12.04. Разработчики же поменьше, убедившись что спустя полгода программа не запускается в новом Ubuntu, а при обновлении сборочного окружения — в старой, кричат «да что же это за система такая кривая! Не могут сделать стандарты!» - забыв что стандарт есть, просто они сами на него наплевали…

ZenitharChampion ★★★★★
() автор топика

Обновляясь с системы версии 10.0 до 10.1, вы можете только удалить раздел /, а раздел /home — оставить, и тогда сохранятся файлы в директории пользователя, а также настройки программ.

А в Windows папку Documens and Settings на D:\ не утащишь! Поэтому перед переустановкой надо обложиться внешними HDD, или в ответ на претензию инсталлятора «папка Windows уже существует!» придумать ей нестандартное имя... Или воспользоваться LiveCD с линуксом, чтобы перенести «Мои документы» и «Рабочий стол» на D:\! Или ничего не переносить, а удалить с C:\ папки WINDOWS и Program Files, но не трогать документы. В инсталляторе выбрать «Не форматировать».

ZenitharChampion ★★★★★
() автор топика

RPCS3 собрал, но

user@user-Lenovo-G565:~/rpcs3/bin$ ./rpcs3 
vm::g_base_addr = 0x7f119f1be000
vm::g_priv_addr = 0x7f109f1be000
Недопустимая инструкция

Жаль...

ozzee
()
20 августа 2016 г.
28 декабря 2016 г.

Обновил Firefox с 45.2.0esr до 45.6.0esr. Наконец-то понял, почему у меня неожиданно всё перестало собираться!

cp ~/firefox-patches/* .
sh apply.sh

В этой директории затесался файл .mozconfig, таким образом в директории сборки Firefox были файлы .mozconfig и mozconfig. Вот билдер мне и выдавал:

client.mk:117: *** missing separator.  Stop.

Стоило удалить один из файлов - и сборка пошла. Положение осложнялось тем, что один из файлов - скрытый! И я его не видел.

Я тут решил делать вторую сборку Firefox - «опасную». Собрать её с aspell, DBus, PulseAudio, startup-notification, libnotify, neko-wifi, GIO, crash-reporter, более новым Freetype, добавить SSE в 32-битную сборку, и SSE3 в 64-битную. Если первая сборка запустится на любом линуксе, вторая имеет шансы не работать на некоторых конфигурациях (например на Athlon XP).

ZenitharChampion ★★★★★
() автор топика
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ZenitharChampion

в Windows папку Documens and Settings на D:\ не утащишь!

О сколько нам открытий чудных готовит просвещенья дух, и опыт, сын ошибок трудных...
Читайте доки, они рулёз. По крайней мере не стоит делать безапелляционных заявлений о том, в чем не разбираешься.
regedit
HKLM\software\microsoft\windows nt\currentversion\profilelist
ProfilePath установить в нужное место. Созданные после перезагрузки профили будут лежать по указанному пути.

bormant ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.