Posted on ::

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

Пожалуй, основными форматами контейнеров остаются только 3: Appimage, Flatpak и Snap.

Первым появившимся был Appimage, прообраз которой был создан командой Саймона Питера в 2004 году.

В ISO-образ с файловой системой SquashFS "зашиты" все необходимые для работы библиотеки и сам бинарный файл. Это плохо сказывается на отзывчивости, однако запуск приложения происходит практически без дополнительных манипуляций. Отсутствуют источники распространения — нет единого репозитория, минимальная интеграция в рабочий стол (например, нет ярлыка рабочего стола), отсутствует механизм обновлений

На основе концепции AppImage Александром Ларссоном был создан Flatpak. Такая концепция предполагала меньшее использование дискового пространства засчёт использования "сред выполнения" — базовых библиотек, необходимых для запуска всем приложениям

Вместо образов SquashFS Flatpak использует git-подобную файловую систему OSTree, что позволяет более гибко управлять версиями. У Flathub есть свой центральный репозиторий, также есть возможность создавать дополнительные репозитории, как это, например, делают разработчики дистрибутива elementary.

Snap — технология, придуманная в недрах компании Canonical, разработчика популярного дистрибутива Ubuntu. Также, как и AppImage, snap-пакет является образом диска с файловой системой SquashFS. Однако, за появление в системе такого пакета отвечает демон snapd тесно связанный с системой инициализации systemD и модулем ядра AppArmor

Статистика распространения

Snap: ~6600 пакетов AppImage: ~1300 пакетов FlatHub: ~1400 пакетов

Примечание:

  1. Некоторые из пакетов отсутствуют на сайте AppImagHub. Наример, IDE Theia Blueprint на официальном сайте https://theia-ide.org/docs/blueprint_download/ запакована в AppImage, при этом не добавлена на сайт AppImagHub

  2. Ввиду большого количества пользовательских репозиториев таких как, Beta, Liri, Elementary не представляется возможным узнать точное количество Flatpak-пакетов

  3. Некоторые пакеты snap, отсутствующие в репозитории Snapcraft не учитываются. Например: серверный медиаплеер Diffuse: https://github.com/icidasset/diffuse/releases/

  4. Предположительно, статистика Snap охватывает каналы -edge, -beta, -candidate и другие. К примеру, у Nextcloud https://snapcraft.io/nextcloud таких каналов 22

Скорость использования

https://cstan.io/?p=13084&lang=en

Дистрибутив: Ubuntu 21.10 Пакет: Firefox 94

Холодный старт: Нативный пакет: 8 секунд AppImage: 10,5 секунд Flatpak: 7,5 секунд Snap: 21 секунда

Горячий старт: Нативный пакет: 2,9 секунд, 207 МБ RAM AppImage: 4,9 секунд, 249 МБ RAM Flatpak: 2,9 секунд, 233 МБ RAM Snap: 8,5 секунд, 261 МБ RAM

https://distrowatch.com/weekly.php?issue=20220131#qa

Дистрибутив: Manjaro Пакет: Firefox

Холодный старт: Нативный пакет: 5 секунд Flatpak: 6 секунд Snap: 18 секунд

Горячий старт: Нативный пакет: 2 секунды Flatpak: 3 секунды Snap: 3 секунды

https://snapcraft.io/blog/snap-speed-improvements-with-new-compression-algorithm

Тестовая машина 1

Kubuntu 18.04 Kernel 4.15.0-118-generic Snapd 2.46.1+18.04 Пакет: Chromium Stable 85.X Сжатие snap-пакета: LZO

Холодный старт: Нативный пакет: 1,7 секунд Snap: 3,1 секунд

Горячий старт: Нативный пакет: 0,6 секунда Snap: 0,6 секунд

Тестовая машина 2

Fedora 32 Workstation. Kernel 5.8.13-200.fc32 Snapd version 2.45.3.1-1.fc32 Пакет: Chromium Stable Сжатие snap-пакета: LZO

Холодный старт: Нативный пакет: 15,3 секунд Snap: 10,1 секунд

Горячий старт: Нативный пакет: 1,3 секунды Snap: 1,3 секунды