Ubuntu Snaps против Red Hat Flatpaks, в чем разница?

Flatpak (ранее известный как xdg-app)[5] — это утилита для развёртывания, управления пакетами и виртуализации[en] для Linux. Предоставляет песочницу, в которой пользователи могут запускать приложения без влияния на основную систему.[6][7][8] Приложения, использующие Flatpak, требуют дополнительных разрешений на использование дискового пространства.[9]

История

Автором Flatpak является Алекс Ларсон (англ. Alex Larsson), одним из мотиваторов стал klik.[11] Название произошло от соединения GNOME и klik, как это обычно происходило в GNOME-сообществе. Проект утилиты претерпел несколько изменений.

Я игрался с системой образов приложений Klik, у которой были интересные идеи I had played a bit with a application image system called Klik, which had some interesting ideas
— Алекс Ларсон[11]
Название — это каламбур от старой схемы наименования в KDE и GNOME — первая буква и название, получилось Klik и Glick The name is sort of a pun on the old KDE/Gnome first-letter naming scheme, although neither Klik or Glick are really desktop-specific.
— Алекс Ларсон[11]

Glick

Изначально идея зародилась в проекте Glick — фреймворк для упаковки (англ. bundling) приложений.[12][13][14] Он позиционировался как приложение, позволяющее разработчикам создавать самодостаточные пакеты для своих приложений. Первая публичная версия 0.1 была выпущена в 2007 году.[15] Позже был выпущен последний релиз 0.2, где удалось обойти ограничение fuse на одновременное выполнение 10 программ.[16]

Особенности реализации:

  • для целевой системы не требуется дополнительная среда выполнения: пока fuse правильно работает — программа ничего не требует;
  • приложение, установленное в комплекте не должно быть перемещено, так как Glick использует трюк со ссылкой /proc/self, чтобы найти свои файлы на /proc/self/fd/1023. Это значит, что разработчику не нужно менять приложение для работы, просто нужно выполнить configure —prefix /proc/self/fd/1023;
  • внутрь файла можно вставить значки и другие файлы, которые хранятся в виде отдельных секций ELF, поэтому их легко извлечь.

Glick2

Вскоре проект перерос в Glick2.[17] В 2011 году появилась первая запись в блоге GNOME о переосмыслении распространения запускаемых файлов, где и был представлен новый Glick2.[18][19] Когда программа запускается, она создаёт новое пространство имени точек монтирования[en] — это функция ядра Linux, позволяющая смотреть на списки монтирования; после этого файл монтируется при помощи fuse с уже известным префиксом, например, в /opt/bundle — эта точка монтирования доступна только программе и её дочерним процессам. Далее запускается стартовый файл, который читает нужные данные и библиотеки из этой точки. С помощью другой функции ядра — разделяемых поддеревьев (англ. shared subtrees) имеющееся пространство имён открывается в общий доступ в систему, например, появится возможность использовать USB носитель, вставленный после запуска программы. Если установить дополнительное ПО, то установка составит собой лишь перемещение в папку (иначе в списке программ она не появится), а также появится слежение за дубликатами при помощи сравнения хешей SHA-1.[20]

Читайте также:  Принудительное обновление системы до iOS 11

Преимущества в сравнении с другими системами пакетов:

  • возможна лёгкая установка в виде перемещения файла приложения в папку ~/Apps
  • приложение работает даже если в системных пакетах будут несовместимые изменения;
  • приложение работает как на старых, так и на новых ОС — не нужно заботиться о системе;
  • можно устанавливать сразу несколько версий приложения;
  • достигается высокий уровень кросс-платформенности; однако, из-за того, что разработчик приложения не распространяет xserver или kernel, есть ограничения в системных вещах.

На основе Glick2 был создан фреймворк bundler, который повторял идеи первого.

xdg-app

В 2013 году в ядро Linux добавили нативную поддержку контейнеров — LXC.[21][22] На Hackfest2013 Алекс Ларсон опубликовал свои идеи насчёт будущего Flatpak.[23] Первые публичные работы начались в 2014 году,[24] а первый релиз состоялся в 2015 году.[25]

Flatpak

xdg-app с версии 0.6 стал именоваться Flatpak.[26]

Flatpak 0.8 имеет долгосрочную поддержку.[27][28]

Flatpak 1.0 была выпущена 20 августа 2018 года.[29][30]

1 июля 2017 года Valve добавила в SteamOS поддержку Flatpak.[31][32]

С сентября 2018 года поддерживается и Windows 10 при помощи WSL.[33]

Пакеты Snap и Flatpak

Иногда так случается, что у сборки Линукс, стоящей на PC, нет своего пакета с «Телеграмом». Это значит, что она, скорее всего, поддерживает пакеты с форматами Snap или Flatpak, к примеру, Ubuntu поддерживает Snap начиная с версии

Потребуется всего лишь по одной команде для каждого вида:

  • «sudo snap install telegram-desktop» для Snap.
  • «sudo flatpak install – из » для Flatpak. Здесь при установке потребуется согласиться с добавлением репозитория Flathub.

Чтобы удалить «Телеграм» теми же путями, в первой команде install меняется на remove, во второй – на uninstall, где после этого слова добавляется

Читайте также:  Установка Linux — пошаговая инструкция на примере Ubuntu

Flatpak – руководство для начинающих

Существует инструмент Ubuntu Snaps. Snaps начал внедряется компанией Canonical для операционной системы Ubuntu, а позже он был принят другими дистрибутивами Linux, такими как Arch, Gentoo и Fedora и т.д. Snap – это единый бинарный пакет, содержащий все необходимые библиотеки и зависимости, и вы можете установить его на любой дистрибутив Linux, независимо от его версии и архитектуры. Подобно Snaps, есть еще один инструмент под названием Flatpak. Как вы уже знаете, упаковка распределенных приложений для разных дистрибутивов Linux довольно трудоемкая и сложная. Каждое распределенное приложение имеет различный набор библиотек и зависимостей для различных дистрибутивов Linux. Но, Flatpak, новая инфраструктура для настольных приложений, которая полностью снижает это бремя. Теперь вы можете создать одно приложение Flatpak и установить его в разных операционных системах. Как здорово, не так ли?

Кроме того, пользователям не нужно беспокоиться о библиотеках и зависимостях, все в комплекте в самом приложении. Самое главное, что приложения Flaptpak изолированы и изолированы от остальной операционной системы хоста и других приложений. Еще одна заметная особенность – мы можем одновременно установить несколько версий одного и того же приложения в одной и той же системе. Например, вы можете установить VLC-плеер версии 2.1, 2.2 и 2.3 на ту же систему. Таким образом, разработчики могут тестировать разные версии одного и того же приложения за раз.

В этом уроке мы увидим, как установить Flatpak в GNU / Linux.

 Установка программ из архивов (тарболов)

Дистрибутив с программой, представляет из себя архив с кучей файлов и обычно имеет расширение  .tar , ,  .bz, .tgz ну или что то похожее.

Читайте также:  Как вывести содержимое файла Linux? Открываем текстовый файл в Linux

Для архивов сжатых с помощью GZIP (gz, gz2 и т.д.) выполняем:

tar -xvzf имя_файла

Для архивов сжатых с помощью BZIP (bz, bz2 и т.д.) выполняем:

tar -xvjf имя_файла

Команды Tar:

  • x — извлечь файлы из архива;
  • v — подробный вывод информации на экран;
  • f — Обязательная опция. Если не указать, Tar будет пытаться использовать магнитную ленту вместо файла;
  • z — обработать архив сжатый gzip’ом;
  • j — обработать архив сжатый bzip’ом.

После выполнения, будет создана папка с именем, идентичным названию пакета.

Далее необходимо открыть эту созданную папку

cd имя_папки

Далее все зависит от того, как была собрана программа, в виде исполняемого файла, или в исходном коде, который сначала необходимо скомпилировать и лишь потом устанавливать. В любом случае для начала лучше прочитать инструкцию, которая должна присутствовать в распакованном архиве и, как правило, называется README, или что то похожее.

Если программа собрана в виде исполняемого файла, то в папке будет находиться файл, с расширением .sh, обычно он так и называется Его достаточно просто запустить на исполнение:

./

Если же программа представлено в исходном коде, выполняем следующие команды:

./configure make make install

После установки делаем:

make clean

Все, как ведите ничего сложного в установке программ в Linux нет.

Будущее выглядит ярко?

Вам не нужно выбирать между Snap и Flatpak прямо сейчас. Те, кто потратил время на установку любого из них, обнаружат, что сейчас не на что смотреть . Вы можете установить оба на свою машину сегодня, но если вы не разработчик или тестировщик, в этом нет особого смысла.

На данный момент это в основном выбор между подходами, идеями и сообществами. Вы предпочитаете программное обеспечение, поддерживаемое Canonical или GNOME? Что вы доверяете, чтобы играть лучше с более широкой экосистемой с открытым исходным кодом? Что вы представляете в других дистрибутивах с большей готовностью принять? Должны ли все только что принять AppImage вместо этого? Поделитесь своей точкой зрения в комментариях!