Linux всегда славился, да и славится по сей день своей недружелюбностью к пользователям и разработчикам софта, ведь в отличие от Windows, у "пингвина" нет адекватных способов распространения ПО, даже исполняемый файл настолько недоразвит, что не способен хранить в себе иконку приложения, как это умеют исполняемые файлы Windows уже больше 25 лет.
В один прекрасный день меня достала эта вечная линуксоидная недоразвитость буквально везде куда не плюнь, от чего было решено создать свой дистрибутив Chimbalix, которым и пользуюсь на постоянной основе.
Но сейчас речь пойдёт про Installer-SH новой версии, зачем он был создан? Правильно, линуксоидные репозитории слишком ненадёжные чтобы на них полагаться, потому мне нужен был гораздо более надёжный и вменяемый способ распространения софта.
Так был создан Installer-SH, сначала он работал сугубо в дистрибутиве Chimbalix, ибо только Chimbalix имеет стандартный каталог PortSoft для размещения разнообразных приложений, но со временем была добавлена возможность установки и в другие линуксы, которые не следуют стандарту ProtSoft, правильно, мой установочный пакет просто устанавливает поддержку стандарта PortSoft в другие линуксы при необходимости.
Хотя в моём приоритете поддержка именно дистрибутива Chimbalix, но пользователь на своё усмотрение может и под другими линуксами устанавливать приложения в формате Installer-SH.
Последняя на текущий момент версия Installer-SH 2.2, в целом, не скажу что изменений очень много относительно версии 2.1, добавил ряд дополнительных проверок, избавился от лишнего мусора, доработал функцию локализации, и собственно всё.
Хотя нет, ещё привёл в порядок иконки, чтобы выглядело аккуратнее.
Примерно вот так оно выглядит после установки, хотя на усмотрение разработчика возможно создание множества вложенных подкатегорий, но для примера я решил не усложнять всё настолько сильно.
Так же был уменьшен размер окна начиная с версии 2.2, ибо ранее размер был явно избыточным.
В остальном по внешнему виду это всё тот же установочный пакет, что и был ранее.
Ну что же, пора бы протестировать новую версию установочного пакета, а для тестов выберу какую-нибудь игру для Linux среди протестированных, хотя тут нет особо выбора, ведь среди 13 протестированных игр для Linux есть лишь две вменяемые, и только одна действительно проработанная, остальное просто кривой мусор в большинстве случаев...
Да, выберу игру 0 A.D., именно её упакую в формат Installer-SH, причём брать буду игру не из вечно недоразвитых и тухлых репозиториев Linux, а с официального сайта, там и версия свежее.
Есть только одна проблема, для Windows достаточно просто скачать установочный пакет и установить, собственно всё.
Но для Linux нет никаких адекватных форматов распространения, собственно о чём я и говорил в самом начале, а значит настало время танцевать с бубном! Ну не перепаковывать же Windows версию игры оборачивая в WINE костыли и выдавая это как "игра для Linux", я же не линуксоид, чтобы опускаться до такой мерзости...
Ну что же, да начнутся танцы с бубном! Первые три страницы мануалов "как установить" состоят исключительно из мерзких, несостоятельных линуксоидных репозиториев, что непригодны для использования без качественного и быстрого доступа в интернет, да ещё и танцевать над терминалом, сразу в помойку такие методы установки.
На четвёртой и пятой странице ещё несколько способов установки при использовании несостоятельных линуксоидных репозиториев, ну и дикость... Только в самом конце нашёлся наиболее адекватный из представленных способов, это AppImage формат, по идее он должен быть в самом верху, чтобы первым попадался на глаза пользователя, но у линуксоидов своя извращённая логика, чтобы они хоть что-то сделали по-человечески, пф...
Я не могу назвать AppImage хорошим способом распространения софта для Linux, нет, у него есть масса как технических, так и практических проблем, но это не важно, ведь всё равно буду перепаковывать в гораздо более практичный формат распространения и установки приложений Installer-SH.
Начнём с x86_64 версии игры.
Распаковываем AppImage, элементарно, ведь в дистрибутиве Chimbalix это делается через контекстное меню файлового менеджера.
Посмотрим, в распакованном виде игра весит порядка 3.4 ГиБ, довольно прилично.
В обязательном порядке проверяю игру, чтобы точно работала, а то вдруг каких-то зависимостей не доложили в комплект, будет неприятно...
А ещё я заметил, что игра раскидывает файлы конфигурации, и возможно иные файлы в домашнем каталоге пользователя, так что воспользуюсь экспериментальной возможностью моего установочного пакета, и соберу это всё непотребство в выделенный "домашний каталог".
Ну и начинаю настраивать Installer-SH под игру, ввожу всю основную информацию, на предупреждения и ошибки пока не обращаю внимания, ведь архивы ещё не подготовлены, но как напоминание человеку, что упаковывает приложение, лишними не будут такие предупреждения.
Мне сейчас приходится с нуля всё подготавливать для игры 0 A.D., ведь ранее такую игру не упаковывал в формат Installer-SH, но последующие версии будет гораздо проще упаковать, ведь можно взять старую версию установочного пакета и просто обновить файлы, включая информацию о версиях.
Ярлыки подготовил, вроде ничего не забыл, так что пришло время упаковать архивы.
Настраиваю размер словаря, ведь игра весит больше 3 ГиБ, а значит более крупный размер словаря лишь положительно скажется на степени сжатия, а значит потребуется меньше места для обычного хранения игры в формате Installer-SH до востребования так сказать.
Можно было увеличить размер словаря до 512 МиБ, но это так же потребует 512 МиБ свободной ОЗУ при установке, так что сначала упакую при оптимальном размере 256 МиБ, а потом уже при размере 512 МиБ, и посмотрю, есть ли смысл увеличивать словарь, будет ли большая разница в размере.
Это называется оптимизацией, я, как упаковщик, стараюсь сократить размер пакета до минимума, но при этом ищу баланс, чтобы установка не занимала слишком много ресурсов системы пользователя, хоть этот процесс оптимизации и занимает много времени, но это нужно сделать лишь один раз, или несколько, если накосячил с подготовкой файлов, а дальше установочный пакет просто будет использоваться.
В итоге сравнение показало, что нет смысла увеличивать системные требования ради нескольких мегабайт экономии от большого словаря, так что оставим оптимальный вариант.
Осталось установить игру и протестировать, проверка целостности сообщает о несовпадении хешей, ведь я не ввёл правильные значения в настройки, сделаю это когда проверю всё.
На рабочем столе появились ярлыки.
Через терминал тоже всё работает, правда забыл сделать ярлык для редактора с выносом домашнего каталога, хотя я не знаю, будет ли кто-то вообще пользоваться этой возможностью...
В меню приложений тоже порядок.
Игра работает как положено.
Запускал с выносом данных в отдельный домашний каталог, и на самом деле тут не так уж и много данных игра создала.
Пожалуй стоит сделать и для редактора карт прослойку с дополнительным ярлыком, хотя его можно запустить через контекстное меню ярлыка, но не каждый линукс умеет такое, так что нужно сделать отдельный ярлык.
Сначала я думал перепаковывать игру, но вспомнил, что моя прослойка ведь универсальная, а значит будет достаточно создать дополнительный ярлык в системных файлах и всё, перепаковывать здоровенную игру по сути не надо.
Поправив ярлыки переустанавливаю игру, прямо вот так поверх старой установленной, установочный пакет выдал дополнительное предупреждение.
Как можно заметить, теперь и редактор можно запустить в отдельном домашнем каталоге, чтобы не разводить помойку в основном каталоге пользователя, так же это позволяет скопировать игру со всеми данными из каталога PortSoft, не скажу что это нужно очень часто, но иногда реально экономит нервы и время, ведь не нужно выковыривать файлы конфигурации по всему линуксу при переносе приложения на другую систему...
Ну что же, всё работает как надо, осталось навести порядок и упаковать распространяемый пакет.
Может кому-то показаться, что у меня слишком много ярлыков для одной игры, и в других линуксах это будет создавать помойку из ярлыков, но извольте, это уже проблема вечно несостоятельных линуксов, в моём дистрибутиве Chimbalix нормально работает, а недоразвитость меню во всяких ущербных рабочих окружений вроде GNOME не моя забота.
Раз разработчики всяких ущербных GNOME настолько дураки, и не желают следовать XDG стандартам меню, ну и хрен с ними, я не собираюсь настолько сильно подтирать задницы таким линуксоидам, такова моя позиция на этот счёт.
Так, хлам почистил, осталось упаковать распространяемый TAR архив, использую свой же скрипт, просто дописываю аргумент -tarpack, всё, архив создан, мне просто было лень такое делать руками, потому сделал эту функцию частью установочного пакета.
Отлично, игра в формате Installer-SH весит 1.3 ГиБ, когда в оригинальном формате AppImage она весила 1.6 ГиБ, это кстати один из технических недостатков AppImage, что уровень сжатия оставляет желать лучшего по сравнению с Installer-SH, ведь у меня используются оптимизированные параметры сжатия с помощью 7-Zip архиватора, чем и достигается минимальный размер.
Осталось создать виртуальную машину и проверить в разных линуксах игру.
Хотел начать с Debian 8, но позабыл про характерную для Linux проблему, да, этот "дряхлый пингвин" не понимает линуксоидную файловую систему BTRFS...
Делать нечего, ищу флешку со старой доброй NTFS, ибо файловые системы от мира Linux просто угар и издевательство какое-то.
Без понятия, заработает ли игра в столь старом линуксе, но попробовать нужно, тем более места хватает даже в Live режиме, ведь выделил 16 ГиБ ОЗУ виртуальной машине.
Но увы, игра отказалась работать в Debian 8, ад зависимостей так характерный для Linux проявил себя во всей красе, нужен GLIBC версии 2.34 или новее, это одна из самых базовых зависимостей в мире "дряхлого пингвина", легко это не обойти костылями, а значит пользователи Debian до 11 версии включительно (GLIBC 2.31) не смогут запустить игру, даже если могут установить с помощью моего установочного пакета...
Эту информацию пожалуй следует указать заранее, чтобы другие люди не гадали какая версия GLIBC нужна.
Это печально, что игре требуется GLIBC версии 2.34+, ведь в системных требованиях не указана такая важная зависимость, только характеристики ЦП и ГП...
Так что перехожу к Debian 12 (GLIBC 2.36) и начинаю проверку игры.
Редактор карт работает, игра тоже, хотя производительность в виртуальной машине довольно низкая, но это не проблема, главное, что всё нормально работает.
Я только не понял куда пропала панель задач в Debian 12, но это уже не моя проблема, а разработчиков дистрибутива, ибо в моём дистрибутиве Chimbalix ничего никуда не пропадает после запуска игры.
Так же проверяю игру в дистрибутиве EndeavourOS 22.12 на основе Arch, всё работает, так что вписываю в системные требования и этот линукс.
В Manjaro 22 тоже всё работает.
На этом пожалуй закончим.
Найти готовый для использования распространяемый файл игры 0 A.D. можно в репозитории GitHub:
https://github.com/Shedou/Chimbalix-Software-Catalog
Теперь я могу в любой момент взять установочный пакет с игрой 0 A.D., и установить где хочу, когда хочу, и даже на компьютерах без доступа к интернету, достаточно просто запустить установочный пакет, несколько раз подтвердить установку, и готово, причём установка происходит в специально отведённый каталог, и не требуется root прав при этом.
Можно ли с помощью линуксоидных репозиториев так же просто и элементарно установить игру, причём на компьютерах без доступа к интернету? Вопрос, конечно же, риторический, ибо репозитории априори мертвы без интернета, даже если и выйдет найти автономные DEB пакеты всякие на заброшенной флешке, использовать их не выйдет, ведь всё загажено типичными для "дряхлого пингвина" зависимостями.
Осталось только подождать вереска красноглазых линуксоидов в комментариях, мол, всё неправильно, Installer-SH говно, а репозитории якобы лучшие, и якобы абсолютно везде в мире есть быстрый интернет для высасывания бесконечных зависимостей из репозиториев, и т.д., и т.п., уже предвкушаю всевозможные сомнительные оправдания для несостоятельных способов распространения софта вроде Flatpak, DEB, RPM и прочих.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.