Пакую программы для Linux в перспективный формат Installer-SH

Я уже некоторое время работаю над новой версией дистрибутива Chimbalix 24.8, и пришёл к выводу, что нужно провести некоторую чистку и обновление системных компонентов, например HardInfo заменил второй версией, ибо первая уже давно заброшена...
реклама
Так же было решено удалить ряд встроенного ПО, например Audacity, qBittorrent, y-cruncher, ведь как показала практика - этот софт крайне редко используется, а места в установочном образе занимает прилично. Вполне возможно найду ещё больше лишнего в своём дистрибутиве, и так же переведу в практичный формат Installer-SH, но это будет видно позже.

Может быть, даже HardInfo перепакую, а то нагадил он мне тут десятком лишних, никому больше не нужных зависимостей, брр, ненавижу эту проблемную особенность Linux...
реклама
Впрочем, Audacity перепаковать не проблема, ибо разработчики выпускают приложение в формате AppImage, а данный формат обязывает паковать вместе с зависимостями, хотя во всё остальном у AppImage есть довольно много проблем, например плохое сжатие, сомнительная интеграция, засорение кэша, да и вообще такой формат требует от системы наличия fuse, а оно не в любом линуксе есть.

Так же и qBittorrent распространяется, разве что над y-cruncher придётся немного поработать, для его запуска нужны специальные прослойки, костыли иначе говоря, чтобы окно не закрывалось автоматически, да и директорию с результатами нужно ведь тоже указывать, иначе бросит где попало...

реклама
Начинаем с Audacity, прежде всего нужно распаковать и протестировать программу.
![]() |
![]() |
Упаковывать буду в Installer-SH версии 2.2, актуальная на текущий момент версия.

Первый запуск делаю с выносом домашнего каталога, оцениваю, и да, приложение довольно много следов оставляет, так что упакую с выносом этого всего хлама в отдельный каталог данных.
реклама

С другой стороны, такой режим работы подразумевает и вынос настроек всего запущенного с помощью Audacity, в том числе браузера, это единственный минус такого переопределения домашнего рабочего каталога для приложений... Хотя если подумать, так приложение ведь не залезет в основной браузер пользователя, получается даже безопаснее, но не всегда удобно, сложный на самом деле выбор.

Хотя ладно, вижу разработчики не позаботились о разделении файлов конфигурации, тут без вариантов нужно выносить рабочий домашний каталог, иначе могут произойти конфликты версий приложения, если пользователь захочет установить два разных Audacity в одной системе...

Во время подготовки файлов было замечено, что qBittorrent есть в двух разных версиях, обычный (libtorrent 1.2) и LT20 (libtorrent 2.0), раз уж Installer-SH позволяет выносить домашний каталог, то почему бы не упаковать два приложения в один пакет? Так и эффективность сжатия повысится, и у пользователя будет выбор сразу из двух разных версий одного приложения. Правда понятия не имею, насколько совместимы файлы конфигураций, а потому сделал два лаунчера с двумя каталогами данных.

Ну что же, подготавливать одновременно три установочных пакета оказалось довольно непросто, однако дело сделано, и даже не запутался между пакетами, осталось упаковать архивы и протестировать.

Устанавливаю каждое приложение, Audacity, qBittorrent и y-cruncher.
![]() |
![]() |
![]() |
Отлично, ярлыки все на месте, правда qBittorrent пришлось подправлять немного, но это уже мелочи, осталось проверить как всё работает, и правильно ли оно работает.

Audacity работает как положено, файлы конфигурации и рабочее место в отдельном домашнем каталоге, а значит не будет конфликтов между прочими версиями программы, если конечно использовать правильно подготовленный Installer-SH для установки.

qBittorrent тоже без проблем, хоть и нельзя запустить одновременно два клиента, ибо программа так работает, но две разные версии по отдельности отлично запускаются. Боюсь представить, если бы пользователю понадобились две разные версии qBittorrent, и приходилось запускать через AppImage, или боже упаси обычным линуксоидным способом...
![]() |
![]() |
Далее утилита для тестирования процессора, работает как и задумано, никаких проблем, хотя нет, есть одна, забыл добавить вариант запуска с root правами, надо доработать.
![]() |
![]() |
![]() |
![]() |
Вот и результаты, к слову, мой i7-10875H ограничен сейчас до 15 Вт, но справился за 14.4 секунды, для сравнения, Ryzen 7 1800X потребляющий порядка 140 Вт без разгона, справляется за 15.3 секунды при такой же задаче в 250 миллионов чисел.
![]() |
![]() |
Ну а Ultra 9 265K справился за 3 секунды согласно результатам на сайте программы y-cruncher, похоже пора переходить на современные Core Ultra, хотя ладно, мне и 10875H сполна хватает, тем более он гораздо производительнее предыдущего R7 4800H в использовании.

Отлично, y-cruncher поправил, добавил ярлык для запуска с root правами, осталось почистить мусор, для этой задачи есть специальный скрипт, запускаю и подтверждаю, готово.
![]() |
![]() |
Ну и подправляем хэш суммы в настройках, это нужно для проверки целостности архивов, этот функционал был реализован одним из первых в Installer-SH, по сей день он то и делает, что сверяет хэш с записанным в настройках, простая, но очень важная функция.
![]() |
![]() |
На этом можно было закончить, однако нужно сделать очень важное дело, какое? Правильно, провести расширенные тесты в прочих линуксах!

Важно заметить, хоть Installer-SH и способен работать в настолько старых линуксах как Debian 7, но фактически приложение может не заработать, ибо у каждой программы для Linux своё собственное болото зависимостей, и с этим я ничего не могу сделать, ведь адекватная СОВМЕСТИМОСТЬ с ОС это всецело ОБЯЗАННОСТЬ разработчиков ПО, и никак иначе!

Я в данном случае являюсь упаковщиком, что создал установочные пакеты пригодные для распространения и использования, так же я разработчик Installer-SH, в моей компетенции работоспособность установочного пакета, и то в пределах Chimbalix, и то если лично упаковал, но ни в коем случае не программы распространяемой установочным пакетом. И если кто-то начинает яростно уверять в обратном - это определённо линуксоид в плохом смысле слова.
Кстати, общий размер трёх приложений в формате Installer-SH всего 208,4 МиБ, эти же программы в оригинальном формате весили целых 332,6 МиБ, разница весьма существенная, именно потому я предпочитаю перепаковывать софт и хранить именно в формате Installer-SH, элементарно меньше весят.

Ну а чтобы не делать дурную работу - подготовил скрипт автоматически устанавливающий все три программы разом, ведь Installer-SH поддерживает тихий режим, именно в этом режиме и буду устанавливать при помощи вспомогательного скрипта. Можно было сделать массив, и через цикл каждую программу устанавливать, перебирая массив с путями к пакетам, однако мне и так сойдёт. И да, проверка прав на исполнение не просто так сделана, старые линуксы по умолчанию запрещают запуск исполняемых файлов...

Начинаем с Debian 7, всё установилось, однако Audacity и qBittorrent не запустились, ад зависимостей характерный для Linux проявил себя, как обычно.
![]() |
![]() |
![]() |
Одному нужен libQt6Core, ну а другой просто утонул в болоте зависимостей.
![]() |
![]() |
Только y-cruncher запустился без проблем, немного ругался на особенности работы виртуальной машины, но в целом всё отлично.
![]() |
![]() |
![]() |
![]() |
Так что вписываю в платформу и перехожу к более новым линуксам.

Начиная с Debian 11 работает Audacity, однако qBittorrent всё ещё утопает в болоте зависимостей, ибо разработчики не осилили нормальную совместимость. А ещё в Debian 11 пропала панель xfce после команды "xfce4-panel -r", но это не проблема установочного пакета, это проблема конкретной версии xfce, функционал которого не работает как положено, в этом все линуксы...
![]() |
![]() |
![]() |
Насколько я понял, панель xfce иногда может некорректно перезапускаться при выполнении команды предназначенной для перезапуска панели, отчего вообще пропадает, как с этим бороться? Ну, наверное достать руки из одного места и вставить в плечи разработчикам xfce, короче никак...
![]() |
![]() |
Разработчики KDE ведь смогли сделать нормальную функцию обновления панели, правда у них меню изначально неполноценное в Debian 12, по умолчанию не поддерживает вложенные категории, за что конечно же не помешало бы прописать вразумительного леща тому умнику, который решил создать меню без поддержки вложенных категорий... Но это уже нюансы.
![]() |
![]() |
![]() |
На этом тесты завершены, по итогу только y-cruncher работает аж в Debian 7 (2013 год), вероятно и в более старых линуксах заработает, но там уже масса других проблем всплывает...
Ну а худшими из разработчиков оказались те, кто выпустил qBittorrent, ибо работает оно начиная с Debian 12, просто феноменально паршивая обратная совместимость со старыми дистрибутивами, даже по меркам Linux. Для кого вообще они разрабатывают? Ах, да, это же линукс...
Кстати, чисто ради интереса, а как там Gentoo 2016 года поживает? А то совсем позабыл про этот линукс...
Короче не очень, только y-cruncher заработал, а ещё есть какая-то проблема со скриптом для удаления программ, почему-то права криво выставляются дистрибутивом. Хотя этот линукс сам по себе кривой до ужаса, удивительно, что Installer-SH вообще подготовил и разложил всё по своим местам...
![]() |
![]() |
![]() |
![]() |
Ладно, пожалуй хватит на этом, найти готовые установочные пакеты приложений можно в репозитории GitHub - Chimbalix Software Catalog, там же можно найти Installer-SH для создания установочных пакетов.
https://github.com/Shedou/Chimbalix-Software-Catalog

А теперь отметим некоторые нюансы, начнём с Gentoo 2016 года, там явно есть проблема с правами на файл для удаления ПО, а значит нужно ввести дополнительные проверки в установочный пакет при разработке следующей версии, чтобы такие крайне редкие проблемы решались автоматически при необходимости.
Так же нужно ввести флаг позволяющий отключать вызов функций обновления меню. В KDE такие функции работают отлично, но вот xfce оказался не настолько стабильным, иногда может пропадать панель задач при использовании функции предназначенной для перезапуска... Это однозначно проблема рабочего окружения, не установочного пакета, тем не менее, с этим нужно как-то работать. Тем более в дистрибутиве Chimbalix такая проблема у меня ни разу не проявлялась, только в сторонних линуксах замечаю.
Что-то надо сделать с полем "платформа", оно не слишком однозначное, ведь туда вписываю протестированные дистрибутивы и общие требования вроде GLIBC...
Ещё нужно доработать техническую составляющую скрипта, что занимается подготовкой PortSoft основы, ибо в тихом режиме информирует пользователя о том, что отработал и установил все базовые компоненты, всё бы ничего, но оно ожидает подтверждения для дальнейшей работы, так быть не должно.
Что там ещё... Точно! Надо убрать лишние переменные для подготовки файлов, проще говоря - почистить от лишнего, и конечно поработать над одним скользким нюансом, необходимо доработать прослойку для запуска софта, чтобы она выдавала информацию о проблемах с запуском, например, если есть ругань на версию GLIBC, то оно должно показать пользователю соответствующее сообщение.
Не знаю как это буду реализовывать, но это нужно сделать, мне просто надоело руками запускать и смотреть терминал, когда через ярлык ничего не происходит. Всё, хватит на этом, пора заканчивать, а то работать над следующей версией Chimbalix и Installer-SH некогда будет.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
![]() |
![]() |
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.










































Комментарии Правила