Введение в Flatpak
Flatpak — это платформа для распространения настольных приложений в различных дистрибутивах Linux. Он был создан разработчиками, которые имеют долгую историю работы с рабочим столом Linux, и работает как независимый проект с открытым исходным кодом.
Терминология
- Flatpak: система для создания, распространения и запуска изолированных десктопных приложений в Linux.
- Приложение Flatpak: это приложения, которые пользователь устанавливает с помощью команды «flatpak» или через другой пользовательский интерфейс, такой как GNOME Software или KDE Discover.
- Runtime: также называемые платформами, это интегрированные платформы для предоставления основных утилит, необходимых для работы приложения Flatpak.
- BaseApp: это интегрированные платформы для таких фреймворков, как Electron.
- Flatpak bundle: особый формат экспорта одного файла, который содержит приложение Flatpak или среду выполнения.
Целевая аудитория
Flatpak может использоваться всеми видами десктопных приложений и стремится быть максимально независимым от того, как создаются приложения. Нет никаких требований относительно того, какие языки программирования, инструменты сборки, наборы инструментов или фреймворки можно использовать.
Хотя Flatpak работает только в Linux, его могут использовать приложения, предназначенные для других операционных систем, а также приложения, специфичные для Linux. Приложения могут быть с открытым исходным кодом или проприетарными (хотя некоторые службы распространения, такие как Flathub, могут иметь ограничения в этом отношении).
Единственные технические требования, предъявляемые Flatpak, заключаются в том, что приложения должны соответствовать небольшому количеству стандартов Freedesktop, чтобы обеспечить интеграцию с рабочим столом (см. условия ).
Проблемы текущей модели упаковки
Важно понимать проблемы текущей модели упаковки приложений, чтобы понять существование Flatpak:
- Дублированные рабочие приложения для упаковки: многие дистрибутивы Linux поставляются со своим собственным менеджером пакетов, форматом пакета и репозиторием. Для этого требуется, чтобы множество сопровождающих упаковывали одно и то же приложение в различные дистрибутивы, или разработчику приложения приходилось изучать язык каждого формата, а затем упаковывать приложение в эти дистрибутивы, или игнорировать большинство дистрибутивов, упаковывать и поддерживать несколько дистрибутивов. Это делает рабочий стол Linux сложной платформой для поставщиков программного обеспечения.
- Ограничено пакетными приложениями: не все приложения изначально доступны в каждом дистрибутиве Linux. Если приложение недоступно в определенном дистрибутиве, пользователю придется вручную загрузить архив приложения, распаковать его и надеяться, что приложение запустится.
- Ограничено дистрибутивами, в которых есть приложения: пользователь ограничен количеством дистрибутивов, в которых есть необходимые приложения для правильной настройки рабочего процесса. Это уменьшает количество дистрибутивов, которые могут подойти пользователю.
- Трудно внедрять инновации в пространстве ОС: сопровождающим дистрибутивов приходится тратить много времени на упаковку приложений, чтобы сделать дистрибутив пригодным для конечного пользователя, вместо того, чтобы сосредоточиться на своих конечных целях. Это задерживает продвижение каждого дистрибутива.
- Старые и устаревшие пакеты: дистрибутивы LTS часто содержат очень старые версии приложений, изначально упакованные. Воспроизводимости ошибок препятствуют различные среды, в которых запускаются приложения, и разработчики приложений часто имеют мало контроля над тем, как их приложение упаковано дистрибутивами.
Flatpak стремится исправить перечисленные выше проблемы, удобно позволяя разработчикам распространять приложения из одного источника и ориентироваться на все десктопные дистрибутивы Linux.
Причины использовать Flatpak
Flatpak имеет ряд существенных преимуществ перед большинством системных менеджеров пакетов:
- Универсальность: Flatpak позволяет устанавливать приложения и запускать их практически в любом дистрибутиве Linux. Сюда входят дистрибутивы, отличные от GNU, дистрибутивы без systemd, дистрибутивы с операционной системой (ОС) только для чтения и различные архитектуры, для которых разработчику не требуется соответствующее оборудование.
- Простор для инноваций: Flatpak помогает специалистам по поддержке дистрибутива сосредоточиться на своих целях по внедрению инноваций в свой дистрибутив.
- Стабильность: сбой в приложении Flatpak не приведет к сбою системы. Это связано с тем, что приложения и среды выполнения Flatpak полностью не мешают работе системы.
- Установка без рута: повышенные привилегии не требуются при установке приложения Flatpak или среды выполнения.
- Приложения в песочнице: одна из основных целей Flatpak — повысить безопасность настольных систем за счет изоляции приложений друг от друга. Это достигается с помощью песочницы и означает, что по умолчанию приложения, работающие с Flatpak, имеют ограниченный доступ к среде хоста.
Flatpak имеет ряд существенных преимуществ перед другими универсальными подходами к распространению приложений в Linux:
- Децентрализованный по дизайну: хотя Flatpak предоставляет централизованный сервис для распространения приложений, он также допускает децентрализованный хостинг и распространение, так что разработчики приложений или их подчиненные могут размещать свои собственные приложения и репозитории приложений.
- Интеграция с рабочим столом: Flatpak также предлагает встроенную интеграцию с основными рабочими столами Linux, так что пользователи могут легко просматривать, устанавливать, запускать и использовать приложения Flatpak через существующую среду рабочего стола и инструменты.
- Эффективность использования пространства: Flatpak дедуплицирует библиотеки и другие файлы, используемые несколькими приложениями, чтобы сэкономить мегабайты или даже гигабайты хранилища в зависимости от количества установленных приложений.
- Дельта-обновления: для обновлений загружаются только измененные файлы.
Среди других преимуществ для разработчиков:
- Прямая совместимость: одно и то же приложение Flatpak можно запускать в разных версиях одного и того же дистрибутива, включая версии, которые еще не выпущены. Это не требует каких-либо изменений или управления со стороны разработчиков приложений.
- Объединение: это позволяет разработчикам приложений поставлять практически любую зависимость или библиотеку как часть своего приложения. Это дает полный контроль над тем, какое программное обеспечение используется для создания приложений.
- Последовательные среды приложений: поскольку они одинаковы на всех устройствах, приложения работают так, как задумано. Это также упрощает выявление ошибок и тестирование.
- Ветки: это позволяет разработчикам отправлять приложения из разных веток, например. «стабильная», «бета» и т. д., сохраняя то же имя.
- Поддерживаемые платформы: называемые средами выполнения, они содержат наборы зависимостей, которые могут использоваться приложениями и которые могут отнимать много времени при разработке приложений.
Информацию о внутренностях Flatpak можно найти в :doc:«под капотом».
© Авторские права 2017-2022, Flatpak Team. Licensed under Creative Commons Attribution 4.0 International License.. Ревизия 7c0b1c85 .
Flatpak
Flatpak — это система для создания, распространения и запуска изолированных настольных приложений в Linux. Приложения можно устанавливать независимо от хост-системы, в которой они используются, и они в некоторой степени изолированы от хост-системы (изолированы) во время выполнения. Это позволяет пользоваться установленными приложениями вне зависимости от обновления хост-системы.
- 1 Установка flatpak
- 2 Добавление репозиториев
- 3 Удаление репозитория
- 4 Список подключенных репозиториев
- 5 Поиск пакетов
- 6 Установка приложений
- 7 Список установленных приложений
- 8 Запуск-удаление-обновление приложений
- 9 Удаление неиспользуемых пакетов
- 10 Просмотр и определение разрешений
- 11 Управление flatpak из GUI
- 12 Известные проблемы
- 12.1 Не найдено удаленных репозиториев
- 12.2 Неправильное имя файла
- 12.3 Не удается смонтировать fuse fs
- 12.4 Discover падает при добавлении новой программы
- 12.5 Нет соединения с интернетом
- 12.6 Не добавляет ярлыки в меню приложений
- 12.7 При запуске приложений выдаёт unprivileged user namespaces disabled
Установка flatpak
# apt-get install flatpak
Для установки приложений при помощи flatpak из-под непривилегированного пользователя следует добавить пользователя в группу fuse:
# gpasswd -a USER fuse
USER — имя Вашего пользователя
Добавление репозиториев
$ flatpak remote-add name_repository url
name_repository — название удаленного репозитория
url — url адрес репозитория
После подключения нового репозитория следует выполнить обновление его данных:
Примечание: При подключении репозитория от пользователя входящего в группу wheel будет запрошен пароль root.
Удаление репозитория
$ flatpak remote-delete name_repository
name_repository — название удаляемого репозитория.
Список подключенных репозиториев
Поиск пакетов
Перед поиском следует выполнить обновление данных в репозитории:
Для поиска пакета:
$ flatpak search name_package
name_package — название Вашего пакета.
Получение списка пакетов в репозитории:
$ flatpak remote-ls name_repository
name_repository — название репозитория
Установка приложений
$ flatpak install name_repository name_package
$ flatpak install flathub firefox
Примечание: Если пакет содержит несколько версий терминал выведет меню выбора версий. Некоторые приложения требует другую среду выполнения она будет загружена автоматически.
Файлы размещаются по адресу:
~/.local/share/flatpak
Список установленных приложений
Запуск-удаление-обновление приложений
$ flatpak run appname
где appname, имя приложения вида org.unknown_horizons.UnknownHorizons (см. flathub.org)
$ flatpak update name_package
$ flatpak uninstall name_package
Удаление неиспользуемых пакетов
$ flatpak uninstall —unused
Просмотр и определение разрешений
Flatpak использует стандартный набор правил песочницы, которые определяют ресурсы и пути файловой системы для приложений. Чтобы просмотреть разрешения конкретного приложения необходимо узнать его ID:
$ flatpak list | grep name_package
Затем посмотреть разрешения:
$ flatpak info —show-permissions application_id
Список доступных параметров для разрешений Вы можете найти в документации flatpak.
Изменить разрешения можно командой:
# flatpak override permission_option application_id
# flatpak override —device=dri org.mozilla.firefox
Сбросить разрешения до стандартных:
# flatpak override —reset application_id
Управление flatpak из GUI
Первый способ
Для установки, обновления и удаления ПО из графического интерфейса используется Центр программ Discover. В настройках Discover → Добавить репозиторий flathub.
Можно использовать web-интерфейс. Выбрать приложение скачать для него ярлык и запустить, Discover автоматически перехватит управление, добавит новый репозиторий и начнет установку.
Второй способ
Открываем Менеджер пакетов Synaptic, устанавливаем пакет flatpak-repo-flathub, также установиться и сам flatpak.
Открываем Центр управления системой, в меню Локальные группы находим группу fuse и добавляем нашего юзера в Члены группы. После этого перезапускаем текущую сессию.
После запуска Discover пройдет обновление репозитариев, в том числе и flathub, о чем нам покажет сообщение при запуске, затем можно пользоваться обычным поиском для установки нужных flatpak прямо в Discover.
На примере Spotify — запустить его можно командой flatpak run com.spotify.Client. Чтобы не запускать через терминал, а из меню, нужно добавить ярлык Spotify с помощью символьной ссылки в /.local/share/applications:
ln -s /var/lib/flatpak/app/com.spotify.Client/current/active/export/share/applications/com.spotify.Client.desktop /home/USER/.local/share/applications
На что обратить внимание в команде? — Расположение установленных программ в /var/lib/flatpak/app, на полный путь до ярлыка файл.desktop, а также имя своего пользователя указанного в примере — USER.
Если все сделано правильно в /.local/share/applications, мы увидим наш ярлык с именем com.spotify.Client.desktop, в меню появиться Spotify. Символьная ссылка работает так — ln -s /ЧТО /КУДА, для понимания команды выше.
Добавление в меню других программ аналогично.
Известные проблемы
Для установки приложений при помощи flatpak из-под непривилегированного пользователя следует добавить пользователя в группу fuse:
# gpasswd -a USER fuse
Примечание: При установке приложений через терминал, чтобы они появились в меню, необходимо перелогиниться.
Не найдено удаленных репозиториев
Внимание! error: remote «flathub» not found
Внимание! error: No remote refs found similar to ‘flathub’Нет доступного репозитория их следует добавить.
Для второго случая:
Неправильное имя файла
Внимание! error: Nothing matches io.brackets.Brackets.flatpakref in remote flathub
Неправильное название файла ярлыка. Например: io.brackets.Brackets.flatpakref
Убрать из имени .flatpakref
Не удается смонтировать fuse fs
Внимание! Can’t get document portal: GDBus.Error:org.freedesktop.portal.Error.Failed: Can’t mount fuse fs
Добавить пользователя в группу fuse
# gpasswd -a $USER fuse
Discover падает при добавлении новой программы
Внимание!
Could not unmount revokefs-fuse filesystem
Failed to execute child process fusermount (Permission denied)
При этом Discover крашится. Нет прав на монтирование файловой системы.
# control fusermount wheelonly
Нет соединения с интернетом
Внимание! Не удалось получить список приложений. Проверьте соединение с интернетом
Discover сообщает об ошибке соединения с интернетом. Следует установить пакет plasma5-discover-packagekit.
# plasma5-discover-packagekit Перезапустить сеанс
Не добавляет ярлыки в меню приложений
Внимание!
Note that the directories
are not in the search path set by the XDG_DATA_DIRS environment variable, so applications installed by Flatpak may not appear on your desktop until the
session is restarted.
Не добавляет ярлыки программ в меню приложений. Сделать файл flatpak.sh исполняемым.
# chmod +x /etc/profile.d/flatpak.sh
Перезапустить сеанс. Это действие в DE kde вызывает вылет при загрузке.
При запуске приложений выдаёт unprivileged user namespaces disabled
Должно помогать # sysctl -w kernel.unprivileged_userns_clone=1
или установка пакета sysctl-conf-userns, но не помогает.
Полезные ссылки
- Документация flatpak
- README проекта
- Web-интерфейс для поиска приложений
- Сайт разработчиков flatpak
Что такое Flatpak, Snap и AppImage — простыми словами
Я достаточно много информации изучил по Flatpak, Snap (Snappy) и AppImage, но не уверен, что понял все правильно. Хотелось бы попросить кого-то из ЛОРовцев разъяснить, что такое Flatpak и Snap и как конкретно они работают. Чуть ниже я приведу несколько утверждений, и прошу пояснить, верные они или нет, и там, где я ошибся, указать, как дела обстоят на самом деле
Итак:
0. Задача Flatpak и Snap — упростить для конечного пользователя процесс установки программ, которые не содержатся в менеджере установки ПО его дистрибутива, а для разработчика процесс сборки программ, дабы ему не пришлось собирать отдельные DEB-ы и RPM-ы.
1. Flatpak (и Snap) являются дополнением для систем DEB и RPM, объединяющей все семейства дистрибутивов, но не может использоваться для ядра и некоторых базовых компонентов системы.
2. файл .flatpak может физически содержать бинарные файлы устанавливаемых программ и их зависимости, но разработчики предпочитают использовать онлайн-сервис flathub
3. Flatpak (и Snap) НЕ является скриптом, который содержит информацию об устанавливаемой программе и списке ее зависимостей
4. Flatpak (и Snap) все равно, на каком конкретно дистрибутиве Linux он запущен
5. Flatpak (и Snap) требует установки рантайма (-ов).
6. Приложения, устанавливаемые через Flatpak и Snap, и все их зависимости устанавливаются в песочницу, и не заменяют собой системные версии файлов и библиотек
7. Snap — это концептуально то же самое, что Flatpak, но с единым «магазином», который контролируется Canonical, плюс нужно подписать с Canonical соглашение для его использования, поэтому, если разработчик уже поддерживает flatpak, то единственная причина поддерживать еще и snap — выделенное место на серверах Canonical для хранения его файлов, хотя технически flatpak и snap, конечно, имеют отличия.
8. «Зоопарк» различных версий пакетов для дистрибутивов это навсегда и реальных альтернатив для DEB и RPM нет и не предвидится, так как основная проблема несовместимости различных дистрибутивов даже не в самой разнице форматов DEB и RPM, а в наборах используемых в разных дистрибутивах библиотек, структуре файлов, расположении каталогов и т.д., и нет надежды на то, что разработчики Red Hat, Debian, Ubuntu, Arch и OpenSuse когда-нибудь решат сесть за стол переговоров и утвердить единый общий для всех стандарт и унифицированный менеджер пакетов.
9. . но есть AppImage — большой увесистый архив, внутри которого содержится программа в универсальном для всех дистрибутивов бинарном виде и все ее зависимости в известном данной программе виде, — программа ставится в песочницу и работает в любом дистрибутиве линукс, однако сделать так, чтобы устанавливаемая через AppImage программа работала и работал хорошо на всех возможных дистрибутивах — сложно, поэтому перспективность AppImage под вопросом, а вот у flatpak будущее однозначно есть.Верны ли данные утверждения?
Flatpak против Snap: 10 отличий, которые вы должны знать
Пакеты Flatpak и Snap как никогда популярны среди пользователей Linux, которые больше не предпочитают собственные двоичные пакеты или AppImages. В первую очередь из-за простоты использования, интеграции с центром программного обеспечения и возможности без проблем получать последние обновления приложений. Вам больше не нужно беспокоиться о зависимостях при установке приложения. Для некоторых преимущества безопасности песочницы/изоляции также являются важным фактором. Но мы не будем обсуждать специфику этого здесь. Какими бы ни были преимущества Flatpak и Snap, в чем их отличия? Что следует использовать? В этой статье мы рассмотрим, чем они отличаются, чтобы помочь вам решить, что вы хотите использовать.
1. Происхождение
Snap был разработан Canonical для создания приложений для платформ IoT. Целью Snap всегда было поощрение обновлений приложений и упрощение их обслуживания разработчиками по сравнению с пакетами deb. В конце концов, он появился для приложений, предназначенных для настольных компьютеров (в том числе с графическим интерфейсом). Flatpak был создан Александром Ларссоном, главным инженером-программистом Red Hat. Это независимый проект с открытым исходным кодом, в котором участвуют многие известные разработчики из GNOME, Fedora и Red Hat. Цель его состояла в том, чтобы иметь надежную структуру для распространения настольных приложений Linux в различных дистрибутивах. Первоначально он был известен как xdg-app, а позже переименован в «Flatpak» в 2016 году.
2. Варианты использования
Каждый формат упаковки имеет свои преимущества. Кто-то может сказать: «Зачем нам это нужно»? Нам нужны все доступные форматы пакетов. Таким образом, вы можете использовать все, что вам нужно в соответствии с вашими требованиями. Следовательно, важно знать, где и почему пакеты Flatpak и Snap могут быть полезны. Flatpak предназначен для запуска приложений на персональных компьютерах. Тем не менее, Snaps работают на вашем персональном компьютере, а также может использоваться для терминальных приложений, ориентированных на сервер. Например, Ubuntu Core , операционная система для Интернета вещей, и Edge созданы из моментальных снимков для обеспечения безопасности и надежных обновлений. Насколько я знаю, Flatpak не использовался ни для чего подобного из-за другого подхода и целевого варианта использования .
3. Время запуска
Известно, что приложения Snap запускаются медленнее, чем Flatpak. Canonical уже некоторое время работает над этим, но при публикации статьи это все еще было проблемой. Конечно, на практике не каждый пользователь может заметить или обратить внимание на разницу. Но общий консенсус относительно времени запуска приложения остается лучше для Flatpak по сравнению со Snap. Например, я нахожу запуск приложения Telegram в виде Flatpak быстрее, чем его Snap . Это может быть субъективно.
4. Производительность
Производительность приложения относится не только к его отзывчивости, но и к его стабильности и предложениям функций. Некоторые приложения работают лучше как Snap, а некоторые как Flatpak. Например, версия GNOME Boxes Flatpak не поддерживает совместное использование устройств по сравнению с пакетом Snap. Можно использовать этот пример, чтобы сказать, что Snaps лучше. Однако я всегда предпочитаю устанавливать Telegram как Flatpak вместо Snap. Итак, вам нужно протестировать ваши любимые приложения, чтобы понять, что лучше для вас; никто не получает явного преимущества здесь.
5. Доступность и популярность
Хотя вы можете установить любой из них в любом дистрибутиве Linux, Flatpak получает преимущество благодаря своей доступности и готовой поддержке в большем количестве дистрибутивов по сравнению с Snap. Например, Linux Mint поставляется со встроенной поддержкой Flatpak. Такие дистрибутивы, как Pop!_OS и Ubuntu MATE, также по умолчанию предлагают поддержку Flatpak. Другими словами, вы найдете множество различных дистрибутивов Linux (кроме разновидностей Ubuntu), в которых Flatpak встроен по умолчанию. Тем не менее, Snaps в основном предпочитают Canonical Ubuntu и его официальные версии. Таким образом, можно сказать, что применение Flatpak для настольных компьютеров Linux гораздо шире (хотя и не обязательно с более обширной пользовательской базой).
Можно отметить, что количество приложений, доступных как Snap, больше.
6. Открытый исходный код против закрытого исходного кода
Flatpak имеет полностью открытый исходный код . К сожалению, когда дело доходит до пакетов Snap, ответ не так прост. Snap — это проект с открытым исходным кодом по своей сути , включая snapd, фоновую службу, которая управляет приложениями Snap и устанавливает их. Тем не менее, серверная часть снимков является собственностью и контролируется Canonical без какого-либо участия сообщества. Как конечный пользователь, у вас не должно возникнуть проблем с частями Snap с закрытым исходным кодом, если приложение выполняет свою работу. Конечно, Flatpak будет вашим выбором, если вы предпочитаете полностью открытые технологии.
7. Децентрализованный подход против централизованного
Flatpak имеет открытый исходный код и использует децентрализованный подход. Несмотря на то, что у нас есть известный портал «Flathub», откуда большинство пользователей получают свои приложения, Flatpak позволяет иметь несколько магазинов, если это необходимо. С Snap вы ограничены магазином Canonical Snap. Некоторые пользователи предпочитают централизованный магазин приложений для удобства. Таким образом, у вас не должно быть никаких проблем ни с одним из них. Однако Flatpak дает вам возможность добавить дополнительный репозиторий, если это необходимо.
8. Обновления
Приложения Snap по умолчанию обновляются автоматически. Пользователь может изменить, когда и как часто происходят обновления. Кроме того, вы можете приостанавливать и откладывать обновления для выбранных снимков. Напротив, пакеты Flatpak не обновляются автоматически. Если у вас есть интеграция Flatpak с программным центром, вы будете получать уведомления о доступных обновлениях, но не будете принудительно обновлены. С Flatpak вы получаете больше контроля по умолчанию. Но некоторые пользователи забывают обновлять пакеты, в которых отсутствуют новые функции или исправления безопасности/ошибок. Итак, хотите ли вы автоматически обновлять приложения, которые вы используете, или хотите, чтобы центр приложений обновлял их вручную, это повлияет на то, что вам больше нравится.
9. Работа
Flatpak не требует прав администратора для установки приложений, в отличие от Snap. Flatpak поставляется с включенной песочницей по умолчанию . Он использует функцию пространств имен Linux Kernel для песочницы, тогда как Snap использует AppArmour. Вы можете изучить обе документации для разработчиков, чтобы узнать больше. Но эти два ключевых момента могут повлиять на выбор одного из них для вашего варианта использования.
10. Точка зрения разработчиков
- Snap проще поддерживать/создавать по сравнению с пакетами Flatpak.
- Безопасность Snap немного более продвинута.
- Используя Flathub в качестве магазина Flatpak, разработчики получают помощь от различных разработчиков в тестировании и улучшении Flatpak.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка 4.8 / 5. Количество оценок: 8
Оценок пока нет. Поставьте оценку первым.