История изменений
Исправление ZenitharChampion, (текущая версия) :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главной странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО, которое может вообще не меняться все эти годы!
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, чтобы бинарники зависели от старой версии Glibc (2.4, 2.12 или 2.17). А также кладём вместе с ними - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng14, libpng15 и libpng16. Если ты слинковал программу с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исправление ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главной странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО, которое может вообще не меняться все эти годы!
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, чтобы бинарники зависели от старой версии Glibc (2.4, 2.12 или 2.17). А также кладём вместе с ними - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исправление ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главной странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО, которое может вообще не меняться все эти годы!
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, и кладём вместе с ним - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исправление ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главной странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО.
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, и кладём вместе с ним - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исправление ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главное странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО.
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, и кладём вместе с ним - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исправление ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главное странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО.
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, и кладём вместе с ним - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально портабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng12, libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.
Исходная версия ZenitharChampion, :
В 2009 году я пользовался openSUSE 11.2. Мне не нравилось, что 11.2 стала первой версией системы, в которой нет KDE 3. А в GNOME2 почему-то нельзя выключить PulseAudio. Я думал, что PulseAudio это самое главное зло! Кто же знал, что потом появится Systemd.
Так вот, я так возмущался этому факту, что решил продолжать пользоваться openSUSE 10.2, которая была у меня установлена на другом разделе жёсткого диска. Ещё 32-битная даже.
Пользовался я пользовался, вдруг браузера нового не хватает. Я скачал с http://ftp.mozilla.org/pub/ - новую версию браузера. Распаковал в /usr/lib/firefox, заменив старую версию. Всё стало хорошо.
Но вот понадобилась мне программка Filezilla. На главное странице было написано, что бинарные сборки собраны в Debian 5. И я убедился в этом, попробовав запустить их. Ошибка! Требуется более новый Glibc или GCC, не помню.
Я пересобрал программу вручную. Она запустилась. И я подумал: а почему все разработчики программ не собирают свои программы в старых системах? Тогда бы они охватили диапазон систем, от новых, до старых!
Потом не запустилась игра Teeworlds. Я её тоже пересобрал. Потом не запустилась игра Вангеры. Тут уже ничего не поделаешь (исходники недоступны), и я обновился до актуальной на тот момент openSUSE 11.4. Когда мне Nxx сказал, что KDE 3 есть в репозитории
KDE:KDE3
.
Актуальная версия системы позволяла запускать любые новые программы. Заработал Google Chrome, Skype, движок Irrlicht для Minetest, движок Love для mari0. Когда вышел Steam, я подумывал обновиться до openSUSE 12.2, но оказалось достаточным установить Glibc из новой системы в старую.
Я задумался: почему нельзя просто пользоваться одной и той же системой лет 10, 20, без обновления. как Windows XP? Зачем, блин, постоянно обновляться? Я же не надрачиваю на новые версии системы, я в ней работаю - я, как пользователь, вообще не должен знать, что где-то там, в глубине, есть операционная система! Что такое операционная система? Скопировать файл, примонтировать флешку? А работаю я ежедневно в прикладном ПО.
Я уже вдоволь наобновлялся и нарадовался новым версиям системы. Стадия «обновления ради обновлений» для меня закончилась. Я когда-то самым первым скачивал Ubuntu 7.10, 8.04, 8.10, 9.04, 9.10. Потом надоело.
Я решил освоить технику сборки ПО таким образом, чтобы оно работало как в старой, так и в новой версии системы. Я решил посмотреть, как это делают другие.
Например игры из бандлов Humble Bundle. World of Goo, Gish, Braid, Aquaria, Cogs, VVVVVV, Osmos, Darwinia, UPLINK и прочие. Как их собирали?
Я увидел, что лежит скрипт запуска run_game.sh
и директории lib32
и lib64
. Внутри - libSDL и libopenal.
Что ж, формула успеха понятна. Компилируем бинарники в старом дистре, и кладём вместе с ним - все нестандартные зависимости, которых может не оказаться у конечного пользователя!
В качестве базовой системы я выбрал CentOS 5. Для неё существовал прекрасный репозиторий, содержащий в себе актуальную на тот момент версию компилятора GCC. При этом, собирая программы при помощи нового GCC, мы получаем бинарники, которые работают даже в «ванильном» CentOS 5, в котором нет нового GCC. Магия какая-то...
Так я собрал dosbox-daum, pcsx2, firefox 45 и ещё пару прог. Мою сборку, кстати, нахваливал один пользователь ЛОРа. У него была Ubuntu 15.04, и официальные бинарники pcsx2 в ней не работали. А мои работали безупречно. Жаль, что потом этот пользователь начал меня обсирать из-под анонимуса, мол «пользуется старыми системами и собирает себе софт самостоятельно - не модный и отстойный чувак».
Короче, берёшь CentOS 7 и подключаешь репозиторий devtoolset. Специальной командой переключаешься на новый компилятор. Зависимости для сборки берёшь из репозитория EPEL. Готовый бинарник прогоняешь через ldd
, получив список библиотек-зависимостей. Тебе не нужно тащить с программой - библиотеки Glibc, Xorg, GTK и много чего ещё, что и так обязано быть в системе у каждого. А какие-нибудь нестандартные библиотеки, такие как libboost, libicu, Qt6 - ты можешь упаковать вместе с программой, подцепляя их скриптом run.sh
. И будет тебе максимально потрабельная программа.
Отдельно стоит сказать про библиотеки libpng и libjpeg. Традиционно в Debian использовалась библиотека libpng12, даже если уже были доступны более новые libpng12, libpng14, libpng15 и libpng16. Слинковался с libpng12 - считай что в любой системе твоя программа будет работать. А теперь Debian мало того что перешёл на новую версию библиотеки, а ещё и старую удалил. Ну сволочи. Столько программ из-за этого «отвалилось». Как линковаться с libpng, я не знаю.