Давайте поговорим о Snap(py), FlatPak и AppImage!
Начну с последнего. На первый взгляд неплохо, одно приложение - один файл, ничего устанавливать не надо. Скачал, «chmod'нул +х» и можно запускать. Но кто гарантирует*, что оно запустится? В отличии от первых двух тут нет никаких зависимостей, никто не знает, будет ли на целевой системе нужная библиотека. И вообще это просто спецификация (да, есть эталонная реализация), в которой так и написано, что надо нацеливаться на наиболее старые версии дистрибутивов и всё носить с собой. Вопросы безопасности в AppImage никак не решаются и оставлены на усмотрения пользователя и применение стороннего ПО (Firejail). С одной стороны пользователь сам должен понимать, что он скачивает и что запускает. С другой - AppImage позиционируется именно как простой для пользователя, неискушённого терминалом, способ скачать ПО и сразу его запустить. Создатель AppImage (ник probonopd) явно фанатеет от macOS и их подхода установки программ с помощью перетаскивания бандла (директория с расширением ".app" из архива в «/Applications». Кстати, что забавно, у пользователей macOS это вызывает большие трудности и они знают 1000 и 1 способ как сделать это неправильно. Проблема с безопасностью не только в, что от пользователя требуются дополнительные знания, но и в том, что применение стороннего решения не всегда работает гладко. И это при том, что именно Firejail рекомендуется на главной странице AppImage. Существуют так же и другие небольшие трудности, вроде интеграции с рабочим столом или автоматических обновлений, но это решается установкой дополнительного демона. Хотя при этом концепция становится уже не такой красивой, как изначальное «перетащил, запустил».
Snap. В основном я им и пользуюсь, т.к. стоит Ubuntu 20.04 и это способ установки ПО по умолчанию в приложении Software**. В отличии от предыдущего варианта, тут есть зависимости и разработчик ПО имеет гарантию (наверное), что его ПО будет работать, если они удовлетворены. Есть также изоляция приложений. Но она несколько странная и достаточно слабая. У некоторых приложений можно изменить список прав (да и вообще посмотреть), у других - нельзя. Нет доступного и ясного объяснения, что при этих изменениях происходит под капотом. Ввели новые термины, вроде «Interface», «Plug», «Slot». Но что оно делает внутри? Монтирует разные директории и файлы устройств, меняет профили AppArmor или что? Я пока точного описания не нашёл. Нет нормальной интеграции этого всего с Software. С виду описание разных приложений может ничем и не отличаться, но если посмотреть с помощью
snap run --shell soft-name
И, наконец, FlatPak. С ним я пока сталкивался недостаточно много, а внутрь заглядывал ещё меньше. На первый взгляд изоляция устроена более полноценно и работают те самые порталы. Хотя, пишут, всё это обман и не работает нормально. По пока неизвестной мне причине запуск приложений из FlatPak происходит быстрее, чем Snap (пробую на одной и той же Ubuntu 20.04). И, насколько я понимаю, магазинов (или их аналогов) тут может быть сколько угодно.
Написал я всё это с целью узнать впечатления других пользователей о данных технологиях, получить более точные и правильные описания процессов, скрытых от глаз, поговорить о достоинствах и недостатках. Может быть есть другие альтернативы, о которых я не знаю?
Интересно, насколько вообще нужно было создавать тот же Snap (или FlatPak) с нуля? Можно ли было использовать apt+dpkg? И тут и там есть пакеты, есть зависимости, действия, которые нужно выполнять при установке и удалении. Можно же было сделать отдельную директорию с отдельной базой для «толстых» пакетов, а управлять ими с помощью существующих средств?
* - предвижу ответ «На GNU/Linux тебе никто ничего не гарантирует, неосилятор!»
** - Как раньше было хорошо с уникальными необычными именами. А теперь «Software», «Files», «Text Editor», «Viewer». Даже в macOS названия и то более разнообразные.