Давайте сначала разберёмся кратко, что такое Installer-SH и как появился.
Изначально была разработана спецификация PortSoft для хранения программ в дистрибутиве Chimbalix. Потом в дистрибутиве Chimbalix был создан стандартный раздел меню Applications для размещения ярлыков. Ведь линуксоидные стандартные разделы оказались непригодны для полноценного использования.
В итоге дистрибутив Chimbalix настолько развился, что потребовался адекватный способ распространения программ. Ведь линуксоидные способы не удовлетворяли потребности пользователей и крайне неудобны в использовании. Так был рождён Installer-SH - новый способ распространения софта для Linux.
Первые версии Installer-SH работали исключительно в дистрибутиве Chimbalix, ведь только в этом «Линуксе» была основа для работы. Однако со временем влияние установочного пакета благополучно распространилось и на прочие «Линуксы».
Прямо сейчас актуальная версия Installer-SH 2.4. Она находится в разработке, и пока не добавлена в стабильный архив. Но Installer-SH уже доказал свою состоятельность относительно линуксоидных способов распространения софта. Там, где Flatpak и Snap оказались абсолютно несостоятельными, Installer-SH отлично отработал.
Конечно, токсичные «линуксоиды» то и дело надрывались против Installer-SH и дистрибутива Chimbalix, в том числе, постоянно оскорбляя меня, разработчика. Разумеется, «линуксоиды» не гнушались прибегать к откровенному софизму, пытаясь через вранье и искажение фактов представить Installer-SH и Chimbalix чем-то ужасным и плохим для окружающих.
Впрочем, мало кто серьёзно слушает токсичных Linux «экспертов». Особенно люди, уже имеющие опыт с «дряхлым пингвином». Популярность «Линуксов» на уровне 3-4% тому доказательство.
А некоторые настолько излились желчью, что даже гневный комментарий не осилили внятно написать. Такую словесную кашу ещё нужно поискать.
Впрочем, даже в такой каше можно понять, что Installer-SH попытались запихнуть в Docker контейнер (кастрированный Linux) и там не заработало, ибо нет базовой команды «sudo». И это на полном серьёзе пытаются выставить как проблему вселенских масштабов. Но беда комментатора в том, что Installer-SH разрабатывался для полноценных «Линуксов». Установка софта в контейнерах, да ещё кастрированных, не подразумевалась изначально.
Вообще, таким комментаторам я могу предложить прогуляться лесом с такими претензиями, ибо в первую очередь разрабатываю для дистрибутива Chimbalix, на втором плане - Debian и уже потом все остальные «Линуксы». Контейнеры тут вообще никаким боком. Однако решение проблемы элементарное: просто добавить дополнительную проверку и вуаля! Теперь Installer-SH способен работать, даже если нет команды «sudo».
Без «sudo» не получиться установить программу в системном режиме. Это, конечно, проблема, но такой режим работы обычно не используется и не рекомендуется для использования. А так - да. Наконец, хоть один токсичный эксперт оказался действительно полезен. Хоть и мелочь, в реальном использовании не имеющая смысла, но исправить всё же следовало.
Кто знает, вдруг мой установочный пакет даже в неполноценных контейнерах будут использовать. Впрочем, что толку гадать. Пора бы уже протестировать Installer-SH в разнообразных «Линуксах». Ну и проведём эксперимент с командой «sudo», чтобы наверняка.
Основные изменения
Постойте. Нужно перечислить основные изменения Installer-SH v2.4 относительно предыдущей версии!
- Удалены лишние файлы и код. Наведён порядок.
- Переработан «ish-software-uninstaller» без кардинальных изменений в принципах работы.
- Переработана прослойка запуска «launcher». Добавлена переменная LD_LIBRARY_PATH. Позволяет располагать дополнительные библиотеки в отдельном каталоге «libs».
- Интегрированы скрипты «prepare-portsoft-menu» и «pack-archives».
- Базовые файлы для подготовки PortSoft и меню приложений переведены в формат tar.xz для большей совместимости со старыми дистрибутивами.
- Введён экспериментальный вспомогательный файл «Menu-Categories.ods» содержащий информацию о категориях меню приложений.
- Добавлены сокращённые формы параметров запуска Installer-SH. Добавлены параетры Arcpack и Clean. Подробности в краткой справке (-help).
- Добавлено поле Package Creator (Создатель пакета) в общей информации о пакете, так как создатель пакета и разработчик программы могут быть разными людьми.
- Добавлена возможность переключения формата упаковки в режим tar.xz вместо 7-Zip. Альтернативный архиватор ощутимо слабее сжимает, но имеет немного более высокую совместимость со старыми «Линуксами». Так же может быть полезно при сжатии сложных приложений со множеством символических ссылок, где 7-Zip просто всё ломает во имя «безопасности».
- Добавлено предупреждение при работе в Debian 9. Очень кривой дистрибутив, независимо от рабочего окружения.
- Удалён архив «user_data» и связанный функционал. Больше нет смысла в нем.
Думаю хватит.
Debian 5 / Debian 6
Начнём с дистрибутивов 2007 и 2009 годов. Первый даже старее легендарной Windows 7, а второй - ровесник.
К сожалению, в Debian 5 установочный пакет Installer-SH заработал лишь частично. Ошибка говорит о проблеме с распаковкой архива с базовыми файлами.
Проблема оказалась в архиваторе Tar. Слишком уж старый он и не поддерживает архив в формате tar.xz (LZMA2). Можно, конечно, перейти на обычный LZMA, но в таком случае всё становиться совсем печально в плане сжатия информации. Не хочу этим заниматься. Просто сделаем заметку, что для Debian 5 не подходят tar.xz архивы в формате LZMA2.
И да, переносить Installer-SH пришлось с помощью образа CD-ROM, ибо Debian 5 - слишком топорная операционная система для своего времени. На 6 лет более старая Windows XP просто на порядок лучше в использовании.
Далее Debian 6. Запускаю прямо с флешки, ибо позволяет. База подготовлена без проблем, а вот установка обломалась, ведь программа упакована в 7-Zip архивы, а архиватор не работает с очень старыми ядрами Linux.
Переключаю 7-Zip формат на Tar, упаковываю архивы в формате Tar, чтобы проверить работоспособность. Архиватор Tar ругался при создании архивов обычной командой, ибо слишком старый для такого. Потому предусмотренны упрощённые варианты команд, чтобы даже в Debian 6 можно было собрать установочный пакет. Собственно, устанавливаю. И оно устанавливается без проблем.
А вот дальше начинаются небольшие проблемы. Условная программа отлично работает. Как раз запустил через ярлык на рабочем столе. Но вот меню приложений оказалось слишком кривым, потому не отображает новые ярлыки без завершения сессии.
Но даже повторный вход в систему не решил всех проблем с линуксоидным меню. Новая категория просто не появилась, а ярлыки разбросало, как получилось. Короче, Debian 6, судя по всему, ещё недостаточно развит, и спецификациям FreeDesktop в полной мере не следует. Либо спецификации в 2009 году ещё были недоразвитыми.
Впрочем, Installer-SH как формат распространения софта вполне неплохо справился в столь старом «Линуксе». Да, Debian 6 - ровесник Windows 7, но это же Linux! И этим всё сказано.
Чуть не забыл. Нужно ведь проверить пакет, когда базовая команда «sudo» отсутствует, но уже закрыл виртуальную машину. Так что запущу какой-нибудь другой «Линукс» для разнообразия. Возьму дистрибутив Ututo Simusol Libre 2017-05 на основе Ubuntu 16.
Удаляю «sudo» с помощью команды «sudo rm» и запускаю Installer-SH. Никаких больше ошибок при установке в режиме User.
Условная программа работает. Хотя меню и представляет собой дикую помойку, ибо Gnome вместо рабочего окружения. Но, в отличие от оригинальной Ubuntu, здесь не понадобилось выходить из системы, чтобы меню обновилось и ярлыки появились.
Пакуем полезную программу
Что же, с простыми экспериментами закончили. Теперь нужно повышать планку. Давайте упакуем какую-нибудь полезную в быту программу. Возьму Kdenlive - редактор видео актуальной версии! На официальном сайте есть выбор между сомнительным AppImage и совершенно несостоятельным Flatpak. Так что перепакую Appimage контейнер как лучший их худших вариантов.
Похоже, загрузка займёт какое-то время. Не так то просто скачать неадекватно жирный AppImage контейнер, когда скорость едва доходит до 200 КБ в секунду. Но я никуда не тороплюсь.
Порой скорость даже падает ниже 100 КБ в секунду. Брр...
Распаковываю AppImage контейнер. И если раньше указывал в качестве исполняемого файла основной скрипт контейнера, то сейчас это нужно будет переделать, ибо есть проблемы с этими контейнерными реализациями.
Например, из-за извращений ради контейнера AppImage приложения могут потерять своё имя при запуске. А это очень неприятно выглядит.
Потому дорабатываю Launcher в соответствии с необходимым для запуска приложения.
В итоге программа не теряет своё имя при запуске через прослойку от Installer-SH. Кушает при этом 469 Мб оперативной памяти.
Конечно, при запуске через AppImage имя программы всплывает, но только для самого контейнера. Сама программа остаётся под именем AppRun. А ещё отдельно вылазит Kioworker какой-то. В совокупности запуск программы в виде контейнера расходует порядка 533 МиБ оперативной памяти.
Уже не говорю про монтирование архивов во временные каталоги, засорение кэша файловой системы с последствиями для скорости последующих запусков, конфликты файлов конфигурации, а так же молчу о прочих недостатках AppImage контейнеров.
В общем, я не хочу пользоваться линуксоидными контейнерами с такими недостатками, так что продолжаю упаковку в формат Installer-SH.
Отлично, Всё подготовлено и настроено. Осталось упаковать архивы с программой. Просто запускаю Installer-SH с аргументом «-ap». Всё остальное сделает само, в том числе внесёт в настройки правильные хэши после упаковки.
Осталось установить и проверить программу.
В дистрибутиве Chimbalix работает без проблем, а значит, можно переходить к расширенному тестированию на совместимость в прочих «Линуксах».
Не забываю подчистить мусор. Хотя оно не всё вычищает, но слишком многое отдавать на такие функции может быть чревато. Так что совсем уж лишнее почищу руками.
Сравним получившийся пакет в формате Installer-SH с контейнером AppImage. В итоге контейнер весит на 56% больше. Бывала разница и больше, но и так весьма неплохо сэкономил место на хранении.
Начал тесты с Debian 7. Программа не запустилась. Привет от характерного для Linux ада зависимостей. Но что меня озадачило, так это отсутствующий вывод сообщения об ошибке. Неужели что-то поломал с обновлением? Хотя вряд ли. Если руками спровоцировать ошибку, то терминал появляется.
В Debian 9/10/11 так же не запустилось даже в оригинальном формате AppImage. Просто отвратительная обратная совместимость у Kdenlive.
Только начиная с Debian 12, Kdenlive нормально запустился. Поистине ужасная обратная совместимость.
Ладно, идём дальше. Для разнообразия протестировал Manjaro 22 и Endeavouros 22. Запускается без проблем. Так что вносим эти «Линуксы» в список совместимости.
Собственно, всё. Установочный пакет Kdenlive создан и протестирован. Хоть и есть странности с отловом ошибок, но там нужно разбираться, почему оно не исполняет указанные в скрипте команды.
Похоже, есть проблемы из-за переменных окружения. Те самые переменные, указывающие на локальные адреса библиотек, что необходимы для работы программы. Судя по всему, это ломает некоторые линуксоидные терминалы.
В итоге было решено переопределить некоторые переменные окружения при возникновении ошибки. Это решило проблему запуска некоторых линуксоидных терминалов. Как бы забавно это не звучало.
Осталось внести исправление, упаковать заново, и наконец установочный пакет готов. Дополнительные проверки уже оставлю за кадром.
Найти созданный установочный пакет Kdenlive можно в репозитории Chimbalix-Software-Catalog. Так же оставлю ссылку на репозиторий установочного пакета Installer-SH.
Благодаря Installer-SH у меня теперь установлено две разные версии редактора Kdenlive, и они не пересекаются в плане файлов конфигураций. Что мне это даёт? Элементарную свободу выбора, ибо теперь могу использовать разные версии редактора для разных задач, что в принципе невозможно в прочих «Линуксах», использующих линуксоидные способы распространения и установки софта.
Мне, пользователю, нужен результат. И пока только Installer-SH, мною же разработанный, способен дать необходимый результат. И пусть хоть надорвутся «линуксоиды» со своими контейнерами и репозиториями. Спасибо, но лучше обойдусь без мракобесия.
На этом можно закончить.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.