Распространяю влияние Installer-SH на все дистрибутивы Linux

Отныне уникальная особенность дистрибутива Chimbalix доступна для прочих линуксов.
30 октября 2024, среда 21:15
Hard-Workshop для раздела Блоги

Чем примечательны линуксы? Бесконечными танцами с бубном в терминале по любым пустякам? Постоянно ломающейся обратной совместимостью с каждой новой версией ядра Linux? Разработчиками ломающими всё, что нормально работало раньше? Может принудительными обновлениями? А может чёрными шрифтами на чёрном фоне, и наоборот, белыми шрифтами на белом фоне? Или дефективными драйверами видеокарт AMD, что встроены в линуксы, и чем так любят гордиться линуксоиды?

Можно очень долго перечислять список неприятных "особенностей" Linux в сегменте ПК и ноутбуков, но есть одна проблема, из-за которой линуксы в корне непригодны для нормального использования, и это проблема распространения приложений.

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

Я например, гораздо больше доверяю 10 летнему приложению где-то на флешке, с которым никогда не возникало проблем, чем какому-то репозиторию в интернете под чужим контролем.

И так как мне не удалось найти никаких адекватных способов распространения ПО для Linux, было решено разработать свой, первым рабочим вариантом выступил Installer-SH, совсем недавно была выпущена версия 1.7, добавлен новый функционал и немного доработан старый:

Решаю древнюю проблему Linux с распространением ПО - выпущен Installer-SH v1.7

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

В целом меня всё устраивает, ибо в пределах своего дистрибутива могу взять любое из приложений упакованных в формате Installer-SH, и в любой момент установить, даже на компьютерах, которые в жизни никогда не подключались к интернету, а благодаря 7-Zip архиватору эти пакеты занимают значительно меньше места во время хранения, чем линуксоидные форматы распространения вроде AppImage / tar.xz:

Однако я так подумал... А почему бы не доработать Installer-SH до такой степени, чтобы он вдруг стал пригоден для использования за пределами дистрибутива Chimbalix? Подумал - сделал! Теперь Installer-SH способен устанавливать приложения в сторонние дистрибутивы Linux!

Можно долго разжёвывать исходный код, однако суть состоит в подготовке основ необходимых для распространения приложений, это базовый каталог PortSoft и стабильная категория меню "Applications".

Если с подготовкой базового каталога PortSoft проблем никаких возникнуть не могло в принципе, то с меню ситуация сложнее, ведь эта часть требует от дистрибутива соблюдения стандартов XDG:

Думаете я просто так сказал про соблюдение стандартов XDG...

Ну что же, пожалуй пришло время протестировать Installer-SH 1.8 в разнообразных дистрибутивах, и посмотреть на то, как они соответствуют XDG стандартам, или не соответствуют вообще, как например Ubuntu с GNOME, в котором частично положили болт на стандарты.

И да, я не собираюсь ничего делать ради дистрибутивов, которые не следуют хотя бы уже существующим XDG стандартам, так что пусть танцуют как хотят любители "плясать как попало", ничего против их выбора не имею.

Теперь можно перейти к тестам, для начала делаю копию с примерами в отдельный каталог, именно тут буду паковать новое приложение:

Так как установочный пакет только что был сделан и ещё не протестирован должным образом, для упаковки воспользуюсь Beta версией программы Blender, если всё пройдёт удачно - автономный пакет появится в репозитории "Chimbalix-Software-Catalog":

Отлично, файлы приложения распакованы:

Подготовил ярлыки и настроил главный скрипт, осталось только упаковать в архивы и проверить, вдруг где-то забыл что-то подготовить:

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

Так как в основном алгоритме скрипта не производилось существенных изменений - в Chimbalix дистрибутиве всё устанавливается как и раньше:

С ярлыками на рабочем столе и в меню тоже всё отлично:

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

Раз дефектов не обнаружено - самое время провести чистку, да, для этой задачи появился специальный скрипт подчищающий лишний хлам, чтобы вручную не заниматься чисткой:

Осталось закинуть на флешку установочный пакет формата Installer-SH и протестировать в других дистрибутивах Linux:

Начнём с дистрибутива Linux Mint 21.1 xfce, а потом и другие протестируем, может у меня и немного устаревшие версии других линуксов, но почему бы и нет?

Эх, я уже отвык от этой характерной для линуксов помойки в категориях меню...

Ну да ладно, приступаем к установке программы Blender v4.3.0 Beta:

Первым делом скрипт увеличивает размер терминала, ибо в линуксах стандартный размер терминала плавает как попало, ещё определяет что не находится в "родном" дистрибутиве Chimbalix, среди условий так же стоит проверка на наличие каталога portsoft и специального раздела меню, именно они являются решающими для появления предложения "подготовить основу":

Сразу же обнаружился косяк с переносом строки, нужно будет починить.

Далее обычный процесс установки, разве что заметил очередной косяк, забыл поправить каталог установки:

Проверяю меню, и да, Linux Mint 21.1 xfce без проблем всё подхватил, разве что меню по умолчанию настроено на идиотскую помойку без поддержки вложенной структуры, но это можно перенастроить:

Пробую запустить Blender в нормальном режиме, и он ругается на драйвер видеокарты, не удивительно, ведь работает в виртуальной машине, потому запускаю в режиме "Software GL", и оно прекрасно запустилось:

Совсем забыл проверить удаление программы, эх, придётся еще раз запускать виртуальную машину и устанавливать заново всё, ведь это делаю в Live-CD режиме...

Проверяем скрипт удаления и выясняем, что нужно бы его тоже подогнать по размеру:

Что же, исправляем выявленные недостатки и переходим к следующему дистрибутиву Linux!

Давайте проверим Ubuntu 24.04.1, конечно, я уже знаю что всё выйдет не очень хорошо, ибо это весьма сомнительный дистрибутив как на него не посмотреть, но всё равно проверим:

Он даже выдал сообщение с ошибками, впервые вижу кстати, ругань на драйвер графики понятное дело, в ядре Linux поломали драйвер графики, непонятно только чем не угодил KVM гипервизор:

Здесь уже есть пункт контекстного меню для быстрого запуска, давайте воспользуемся:

В итоге терминал Ubuntu раздулся почти на весь экран, а цветовая схема весьма своеобразная, ну да ладно, устанавливаем приложение:

Так как автоматическая установка доверенности ярлыкам работает только в XFCE окружении рабочего стола, в других окружениях ярлыки нужно вручную делать доверенными, впрочем, это мелочи:

Само приложение отлично работает:

Но с ярлыками в меню уже проблема, GNOME не следует XDG стандартам меню, но проблема тут в другом, меню не обновилось автоматически, и ярлыки новые не появились, это можно "починить" просто выйдя из системы и повторно зайдя, но я словил типичный для Ubuntu чёрный экран, такое не сказать что очень часто бывает, но именно сейчас мне повезло на чёрный экран при выходе из системы:

Хотел было протестировать в "безопасном режиме" не загружая кривые драйверы графики линукса:

Но Ubuntu почему-то в упор не хотела видеть флешку в "безопасном" режиме, так что придётся снова загружаться в обычном режиме и надеяться, что чёрный экран обойдёт стороной:

В итоге спустя несколько чёрных экранов удалось перезайти в систему и обновить чёртово меню Ubuntu, ярлыки для запуска приложения появились, но ярлык удаления нет, да и валяются они прямо в основном меню без подкатегории, короче дистрибутив в полной мере не следует стандартам XDG, ибо при доскональных проверках выяснилось, что Ubuntu (GNOME) вообще плевал на файлы разметки меню, лишь бы ярлык был...

Но почему ярлык удаления не появился? Да потому что пути к исполняемому файлу указаны в кавычках, это заставляет систему игнорировать данный ярлык в местах вроде "открыть файл с помощью...", ведь согласитесь, там не нужны ярлыки для удаления приложений.

Однако меню Ubuntu не отображает ярлыки пока пути в кавычках:

Похоже появилась задача требующая решения... Ладно, давайте перейдём к дистрибутиву Lubuntu 22.04.1...

Тут используется окружение LXQT, не стоит путать с LXDE:

Устанавливаю и наконец решаюсь исправить косяк с неправильным описанием в переводе на русский, но уже за кадром, но меня напрягает тот факт, что этот дистрибутив не поддерживает переменную "XDG_SESSION_DESKTOP", следовательно - не определилось рабочее окружение скриптом, похоже нужно будет костыли добавить для перебора разных переменных в случае отсутствия основной:

Так как меню само не обновилось - выхожу и вхожу заново в систему, и снова ярлык удаления потерялся, досадно, всё же придётся с этим что-то делать, непонятно только как изолировать ярлык для удаления программы от прочих системных окон помимо основного меню приложений, недоработка стандарта XDG однако:

В моём дистрибутиве кавычки в ярлыках не доставляют проблем, но в других, как показывает практика, это проблема, а значит от этого костыля придётся отказаться...

Ну а что до Blender? А он работает:

Пока всё идёт лучше, чем могло бы... Ну что, исправляю найденные косяки и проверяю ещё раз, потерянный ярлык появился, однако при удалении выяснилось, что список файлов для удаления не сформировался во время установки:

Найти проблему оказалось не сложно, это проблема стандартной линуксоидной утилиты awk, она не понимает опцию "-i"...

Думаете это только у меня вечно какие-то такие проблемы случаются? Увы, если бы в линуксах действительно всё было хотя бы неплохо, даже не хорошо и не отлично как любят рассказывать линуксоиды, у других людей такие проблемы не случались бы:

Эх, опять геморрой на голову с линуксоидным мусором недоразвитым и постоянно меняющимся... Ну да ладно, заменил awk на sed, даже строка получилась проще:

В итоге ещё одной проблемой меньше, отлично, разве что нужно ещё добавить проверку на текущее рабочее окружение в файле деинсталлятора, чтобы не пытался обновлять меню командой доступной только в xfce:

Ну что, исправляем выявленные косяки и переходим к повторному тесту Ubuntu 24.04 - просто появились все ярлыки программы в ущербном GNOME меню и всё на этом:

Перейдём к следующему дистрибутиву, хм, какой же выбрать...

Точно! Как насчёт "игровой" Nobara? Там используется KDE в качестве рабочего окружения:

Ох уж этот линукс курильщика, ругается на отсутствие доступа к интернету чёрным шрифтом на тёмном фоне...

Ну что, первый запуск выдался неприятным, терминал немного "потерял синхронизацию" при увеличении размера (окно неправильно вывелось на экран), впрочем, ничего удивительного для дистрибутивов использующих вечно кривой Wayland вместо старого и проверенного временем X11, в любом случае начинаю установку немного потанцевав над окном:

Отлично, тут даже не пришлось выходить из системы и входить заново, чтобы новое приложение появилось в меню, правда стандартное меню не поддерживает вложенные категории, хорошо в KDE есть "альтернатива" с поддержкой вложенных категорий, однако это лишние телодвижения со стороны пользователя, который ещё должен знать куда нажимать, чтобы поменять меню на более функциональное:

В любом случае оно работает, дополнительных косяков требующих исправления не обнаружено:

Дальше проверим Fedora 38 с рабочим окружением LXDE, не путать с LXQT:

Ух ты, разработчики пугают пользователя при загрузке, мол, версия дистрибутива устарела, бегите скорее, обновляйтесь! Чтобы наверняка всё поломалось и пришлось переустанавливать линукс, как всегда!

А вот тут небольшие проблемы, окно терминала не увеличилось автоматически, значит терминал в Fedora 38 LXQT не в полной мере умеет работать с базовой командой printf, печально, а ещё это тусклое оформление неадекватное, брр...

Но главная проблема оказалсь в нехватке свободного места:

Ну что же, придётся выделить чуть больше 8 гигабайт ОЗУ для виртуальной машины, ведь именно ОЗУ используется как хранилище при работе в режиме Live-CD:

Но увы, похоже Fedora слишком недоразвита, чтобы выделять место в зависимости от объёма ОЗУ, придётся установить дистрибутив, ибо мне лень начинать танцы с бубном в терминале, чтобы создать RAM диск и подсунуть вместо домашнего каталога для увеличения доступного пространства:

Как это мило, 24 ГБ ОЗУ, а доступное в Live-CD место всего 1.1 ГБ, а ещё это кривое меню приложений, в котором значки категорий выглядят неопределёнными, ох уж эти вечно кривые линуксы:

Система установилась, и это выглядит, мягко говоря, забавно:

Ладно, давайте установим Blender:

И снова оно работает, проблема с размером терминала конечно не радует, ну да ладно, и так сойдёт пока:

Далее было решено проверить MATE окружение, для этого взял Linux Mint 21 Mate:

Наконец адекватное оформление терминала, аж глаза радуются, приложение установлено:

Ярлыки в меню присутствуют, хотя и не поддерживается вложенная структура, что печально, но приложение работает:

Можно переходить к тестированию Cinnamon версии Linux Mint 21:

Устанавливаю:

Увы, но и тут меню не поддерживает вложенные категории, но приложение работает:

Так как статья вышла слишком большой, напоследок протестируем дистрибутив Bodhi 7, там используется специфическое окружение рабочего стола Moksha:

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

Особенно нелепо выглядят неуместные эффекты терминала при нажатии на кнопку TAB, порой они бывают кислотного зелёного цвета, брр, какой-то наркоман работал над дистрибутивом, такое первое впечатление:

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

Ещё меню не обновляется автоматически, пришлось выходить из системы и входить заново чтобы программа появилась, сам Blender работает:

На этом закончим тесты.

-

--

Заключение

В итоге мне удалось сделать свой Installer-SH универсальным для всех линуксов, ну или почти всех...

Пришло время подвести наглядную таблицу с результатами тестов:

Итого получается, что во всех протестированных дистрибутивах приложение нормально работало (Blender 4.3.0 Beta), в трёх дистрибутивах есть однозначные проблемы с поддержкой вложенных категорий меню, это Ubuntu (GNOME) и Linux Mint в редакциях Mate / Cinnamon, в остальных дистрибутивах либо есть поддержка вложенных категорий меню, либо её можно вручную настроить (если знать как).

Насчёт меню (ярлыки в меню) скажу так, во всех протестированных дистрибутивах ярлыки присутствуют, но в некоторых дистрибутивах меню явно не обновлялось автоматически, в некоторых обновлялось, однако это может быть чистым везением, и требует более длительной проверки, но результаты все равно выставил по ситуации во время тестирования.

Ярлык рабочего стола уже не включал в таблицу, ибо во всех проверенных линуксах он отображался.

В целом это можно назвать успехом, и на этом завершу работу с Installer-SH 1.8, найти его можно в репозитории GitHub (в каталоге Installer-SH-Old-Versions):

https://github.com/Shedou/Chimbalix-Software-Catalog

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

Кстати, а ведь если подумать, мой установочный пакет вполне самодостаточен, ведь практически всё содержит в себе, что необходимо для работы и подготовки основ в сторонних линуксах, разве что не носит с собой утилиты вроде ls, cp, rm, sed, awk, grep, chmod/chown ну и сам bash...

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.