В чем разница между snaps, appimage, flatpak и другими?

В последнее время я получаю этот вопрос от студентов, и хотя у меня есть много информации, которую я могу предложить, я не нашел источника, на который я мог бы указать людям, где они могут прочитать обновленный ответ (я нашел много дезинформации и устаревшей информации). Итак, некоторые из вопросов, которые у меня есть к таким форматам упаковки, как snap, appimage, flatpak и другим в этой эволюции универсальных упаковочных систем, следующие::

  • Кто создал формат пакета?
  • Какие функции он предлагает?
  • Какие особенности являются уникальными для него? (Чего у других еще нет)
  • Кто его поддерживает?
  • Какие дистрибутивы его используют?
  • На что ориентирован пакет? (Для настольных компьютеров, Облаков, мобильных устройств и т.д.)
  • Какие из них разрабатываются более активно?

Вот длинное табличное сравнение AppImage с Snap против Особенности Flatpak. Это от самого AppImage Wiki на GitHub:

Обратите внимание, что это сравнение в основном с точки зрения AppImage, хотя оно пытается справедливо представить каждый проект.

Общие

Особенность Изображение приложения Щелкать Флэтпак
Пакет приложений с графическим интерфейсом для рабочего стола ✅ Да ✅ Да ✅ Да
Инструменты командной строки терминала пакета ✅ Да ✅ Да ✅ Да (с псевдонимами идентификаторов приложений, если вы редактируете ПУТЬ)[1]
Процессы сервера пакетов ✅ Да ✅ Да ⚠️ Возможная , но не главная цель [1]
Пакет системных услуг :x: Нет ✅ Да [1] :x: Нет
Ядра пакетов :x: Нет ✅ Да [1] :x: Нет
Правильная тематизация Приложений ✅ Да (если все сделано правильно) ✅ Да (если текущая системная тема была привязана) [1] ✅ Да (если текущая системная тема была изменена) [1] [2] [3]
Использование библиотек и зависимостей Из базовой системы или в комплекте с appimage Из базовой системы, базовая защелка, привязка платформы (ГДЕ, гном, Вино, ..) или в комплекте с Snap Из Freedesktop, GNOME, KDE main время выполнения или в комплекте с Flatpak
Корпоративная поддержка :x: Нет (проект сообщества) ✅ Да (канонический) ✅ Да (Бесконечный, Красная Шляпа)

Принятие

Особенность Изображение приложения Щелкать Флэтпак
Количество приложений в главном хранилище 1126 (2020-08-14 [1] история) +6400 (2020-08-06 [1]) ~1100 (2020-08-14)
Известные поставщики коммерческих приложений, использующие формат Саман, IBM, KDAB, Корпорация Майкрософт, Prusa, Ультимейкер, ... Корпорация Майкрософт, Spotify, Слабина, Реактивные мозги, Скайп, источник узлов, ... Xamarin, Кодовое мышление, Игалия, ...
Встроенные в сторонние средства разработки приложений электрон-конструктор electron-builder, GNOME Builder ГНОМ-строитель

Удобство использования

Изображение приложенияЗагрузите с сайта, затем перетащите один файл в файловом менеджере в нужное место установки.drag-and-dropЩелкатьУстановка через дистрибутив app store (поддерживается из коробки в Ubuntu, Zorin OS, KDE Neon, ..) или через CLI:

$ snap install gimp

ФлэтпакУстановка через дистрибутив app store (поддерживается из коробки на Fedora, EndlessOS, ..) или через CLI:

$ flatpak install --user flathub org.gimp.GIMP

Песочница / Изоляция

Особенность Изображение приложения Щелкать Флэтпак
Может работать без песочницы ✅ Да (не обязательно. Необязательно для упаковщика.) ✅ Да (если snap был создан и одобрен для использования "классического" ограничения) [1] [2] :x: Нет (Ограничение доступа к приложениям по дизайну)
Может использоваться с различными песочницами ✅ Да (например Огненная тюрьма [1], снаряжение [2], Пузырчатая пленка) :x: Нет (тесно связан с Снаряжение) :x: Нет (тесно связан с Пузырчатая пленка)

Установка / Выполнение приложения

Особенность Изображение приложения Щелкать Флэтпак
Может работать без установки ✅ Да (после установки исполняемого бита) :x: Нет (должен быть установлен snapd) :x: Нет (необходимо установить с помощью клиентских инструментов Flatpak)
Может работать без root-доступа ✅ Да ⚠️ Только после установки ⚠️ Только после установки
Запуск из сжатого источника, а не распакованный ✅ Да ✅ Да :x: Нет
Авторы приложений могут размещать загружаемый файл рядом с .exe (Windows) и .dmg (macOS), которые пользователи могут устанавливать в автономных системах ✅ Да (.appimage - содержит все, что необходимо для запуска приложения в автономной системе) :x: Нет (.snap - требуется установка snapd, и система должна быть подключена к сети, если требуются дополнительные привязки) :x: Нет (для файлов .flatpakref требуется подключение к Интернету, для пакетов .flatpak требуется среда выполнения)
Позволяет авторам приложений самостоятельно размещать приложения без потери функциональности ✅ Да :x: Нет ✅ Да [1]
Подходит / оптимизирован для машин с воздушным зазором (автономных) (типа тех, что использует Эд Сноуден) ✅ Да ✅ Да (вы можете загружать приложения и обновления в автономном режиме) ✅ Да (поддержка P2P позволяет устанавливать и обновлять в автономном режиме)
Может хранить и запускать приложения из нестандартных мест, таких как общие сетевые ресурсы, компакт-диски и т.д. ✅ Да Подлежит определению ✅ Да (требуется настройка) [1]

Распространение приложений

Особенность Изображение приложения Щелкать Флэтпак
Центральное хранилище / Каталог AppImageHub Магазин оснастки ФлатХаб
Полностью децентрализованный без центральных привратников ✅ Да :x: Нет (один доминирующий магазин приложений) [1] ✅ Да
Отдельные Репозитории Приложений :x: Нет (не хранится в репозиториях) :x: Нет (у вас может быть только одно хранилище для каждого устройства) ✅ Да
Может иметь несколько версий параллельно (включая исторические) ✅ Да (неограниченное количество произвольных версий) ✅ Да (по одному на канал) ✅ Да (любая версия, доступная в OSTree, может быть установлена параллельно)
После установки приложения его все равно можно легко скопировать на другой компьютер (например, поделиться с другом локально). ✅ Да (одно приложение = один файл; нет “установки”, поэтому приложение всегда находится в одной и той же форме) ✅ Да (но также необходимо копировать снимки, от которых это зависит) ✅ Да (вы можете использовать flatpak create-usb для копирования на USB-накопитель)

Обновления приложений

Особенность Изображение приложения Щелкать Флэтпак
Механизм обновления AppImageUpdate Из Репо Из Репо
Двоичные дельта-обновления ✅ Да (использование zsync без необходимости заранее генерировать дельты) ✅ Да (только при использовании частной серверной службы, которая должна генерировать дельты) ✅ Да (использование OSTree для предоставления атомарных обновлений)
Приложения могут быть самообновляющимися ✅ Да (использование встроенной информации) ✅ Да ✅ Да

Поддержка дистрибутива Linux

Особенность Изображение приложения Щелкать Флэтпак
Самая ранняя Поддерживаемая Ubuntu Ubuntu 10.04 Ubuntu 14.04 Ubuntu 16.04
Самая ранняя поддержка openSUSE openSUSE 11.3 Скачок 42,2 Скачок 42,1
Самая ранняя поддерживаемая Fedora Фетровая шляпа 12 Фетровая шляпа 24 Фетровая шляпа 23
Самый ранний Поддерживаемый Debian Debian 6 Debian 9 Debian 9
Самые ранние Поддерживаемые CentOS CentOS 6 CentOS 7.6 CentOS 7
Работает на Ubuntu "из коробки" ✅ Да ✅ Да :x: Нет
Работает на openSUSE "из коробки" ✅ Да :x: Нет tbc
Работает на Fedora "из коробки" ✅ Да :x: Нет ✅ Да
Работает на Debian "из коробки" ✅ Да :x: Нет tbc
Работает на CentOS "из коробки" ✅ Да :x: Нет ✅ Да
Живые системы (например, Живой ISO, Живой USB, Живой CD, живая сетевая загрузка) ✅ Полный ⚠Partial Частичный (начиная с 18.04, но он ограничен ограничением ядра и "болью в работе, мы тратим на это почти ноль времени", по словам разработчика Canonical) ⚠️ Частичный (Сеанс должен быть перезапущен для получения экспорта)
Может работать на Chrome OS (Crostini) ✅ Да (Chrome OS 73) ✅ Да (Chrome OS 73) ✅ Да

Цели и управление

Особенность Изображение приложения Щелкать Флэтпак
Независимо от какого-либо конкретного производителя дистрибутива ✅ Да (проект сообщества) :x: Нет (каноническая инициатива) ✅ Да (общественный проект)
Не связано с бизнес-кейсом какой-либо доминирующей компании ✅ Да :x: Нет (центральное место в бизнесе Canonical) :x: Нет
Сделано для уменьшения влияния дистрибутивов на экосистему настольных Linux в качестве центральных привратников ✅ Да :x: Нет ✅ Да (Каждый может разместить свое собственное репо)
Сделано для расширения возможностей разработчиков приложений и конечных пользователей ✅ Да ✅ Да [1] ✅ Да [1]
Работа над объединением настольной платформы Linux вместо того, чтобы продолжать разделять пользовательскую базу на разные экосистемы дистрибутивов ✅ Да (по указывая на основные проблемы которые нужно решать вместе) :x: Нет (фактически помещая базовую привязку другого дистрибутива поверх базового дистрибутива) :x: Нет (эффективное размещение дистрибутива Yocto поверх любого базового дистрибутива)

Размер приложения

Особенность Изображение приложения Щелкать Флэтпак
Хранилище приложений на диске всегда остается сжатым ✅ да ✅ да :x: Нет (на стороне сервера сжатие, на стороне клиента - нет) [1]
Приложения занимают гораздо меньше места на диске, чем "традиционно установленные" приложения ✅ да ✅ да Подлежит определению
Пример: Размер загрузки LibreOffice (источник) ~248 МБайт 463 МБайт [обновление от июля 2020 года] 543 МБайт
Перед загрузкой точно определите размер, который будет загружен и сохранен на диске ✅ Да (одно приложение = один файл) :x: Нет [Не учитывает привязки платформы [1]] :x: Можно оценить только наихудший случай из-за удаления дублирования

Скорость выполнения

Особенность Изображение приложения Щелкать Флэтпак
Время запуска LibreOffice (источник) 3 секунды 13 секунд 7 секунд

Формат пакета

Особенность Изображение приложения Щелкать Флэтпак
Формат файла стандартизирован официальным органом по стандартизации :x: Нет (но заинтересован в этом, как только формат стабилизируется) ✅ Да (Создается с помощью формата привязки TOB[1]) :x: Нет (хотя экспериментальная поддержка OCI существует)
Концептуально вдохновленный macOS .приложение внутри .dmg (переходим к следующему); Rox AppDir Щелчок (Пакеты Ubuntu Touch) нажмите на кнопку (прежнее название AppImage)

Кодовая база проекта

Особенность Изображение приложения Щелкать Флэтпак
Участникам не нужно подписывать CLA ✅ Да :x: Нет ✅ Да
Разработан с тех пор, как 2004 (тогда назывался нажмите на кнопку) 2010 (предшественник назывался Click Packages) 2013 (предшественники называли Глик Глик2, и xdg-приложение)

Щелкает были созданы Canonical для Ubuntu. Основными преимуществами snaps являются:

  • Независимость от зависимостей - все библиотеки и зависимости включены в пакет. Это также позволяет иметь больше версий одной и той же программы.
  • Sandboxing - snaps are using modified AppArmor to sandbox the applications
  • Дельта-обновления - привязки также должны разрешать дельта-обновления

Основным недостатком snaps является то, что программное обеспечение может использовать только библиотеки, входящие в его пакет. Это потенциальная угроза безопасности, поскольку автор пакета должен поддерживать все библиотеки исправленными и обновленными.

В настоящее время Snaps можно запускать в Ubuntu, Arch Linux, Fedora, Linux Mint, CentOS и Gentoo. Они также используются в Ubuntu Touch. Они предназначены для настольных компьютеров, серверов, телефонов, интернета вещей и маршрутизаторов.

Флэтпак обладает теми же преимуществами, что и snaps. Однако он использует пространства имен вместо AppArmour для песочницы. Основное отличие заключается в том, что Flatpaks может использовать как библиотеки, включенные в пакет, так и общие библиотеки из другого Flatpak.

Разработчиком Flatpak является сотрудник Red Hat Александр Ларссон. Программное обеспечение Flatpak в настоящее время доступно в Arch Linux, Debian, Fedora, Mageia, Solus и Ubuntu. Он ориентирован только на настольные компьютеры.

Изображения приложений разработаны Симоном Петром. Как и в snaps или Flatpak, пакет включает в себя все библиотеки, необходимые для запуска программы. Программы AppImage не изолированы и для их запуска не требуются права суперпользователя. Согласно веб-сайту проекта, AppImages должен работать на Arch Linux, Centos, Debian, Fedora, openSUSE, Red Hat Linux и Ubuntu.

Я нашел интересное сравнение производительности (процессор + память) для этих упаковочных систем.

VLC

VLC

LibreOfficeenter image description here

Gimp

enter image description here

Источник:https://verummeum.com/portable-package-formats/

не забыли главное, является ли это открытым исходным кодом?

Изображение приложения

Клиент с открытым исходным кодом ✅ Да
Сервер с открытым исходным кодом ✅ Да

Щелкать

Клиент с открытым исходным кодом ✅ Да
Сервер с открытым исходным кодом ❌ Нет

Флэтпак

Клиент с открытым исходным кодом ✅ Да
Сервер с открытым исходным кодом ✅ Да