Flatpak

Информайия по Flatpak

Что такое Flatpak пакеты?

Flatpak – это современный прогрессивный формат самодостаточных пакетов для GNU/Linux. Он поддерживает рантаймы, изоляцию внутри песочниц, установку без наличия прав суперпользователя и многое другое.

Какие преимущества и недостатки у Flatpak пакетов?

Преимущества:

  • поддерживает динамическую линковку с большим количеством библиотек из рантаймов, что решает проблемы с лицензированием, их поддержкой в актуальном состоянии и исправлением в них ошибок, а также уязвимостей;

  • библиотеки, для которых нет рантаймов, могут быть упакованы непосредственно внутрь флатпака и подгружаться по мере необходимости;

  • Flatpak позволяет установить разные версии приложений одновременно;

  • для установки не требуются права суперпользователя;

  • поддерживается контейнерная изоляция приложения внутри собственной песочницы;

  • приложению могут быть выданы только необходимые права доступа и разрешения;

  • могут использоваться на любом дистрибутиве GNU/Linux без перекомпиляции и перекомпоновки;

  • лёгкое создание и хостинг собственных репозиториев.

Недостатки:

  • из-за того, что Flatpak пакеты по определению должны запускаться на разных дистрибутивах, они содержат в себе все зависимости либо в виде рантаймов, либо внутри флатпака;

  • в публичных репозиториях (например Flathub) мейнтейнеры не занимаются обновлением своих пакетов до актуальных рантаймов, из-за чего уже при установке нескольких приложений в системе появится куча различных версий одних и тех же рантаймов, что тратит очень много места на диске впустую;

  • из-за использования разных рантаймов полноценно не используется разделяемая память библиотек, т.е. каждое приложение загружает все свои зависимости в собственное адресное пространство;

  • отсутствует возможность использования общесистемных настроек среды для контейнеризированных приложений;

  • отсутствует возможность использования уже установленных в системе библиотек.

Репозитории Flatpak

В настоящее время самым крупным, популярным и активно поддерживаемым сообществом репозиторием с Flatpak пакетами является Flathub. Он содержит огромное количество приложений, оформленных в качестве самодостаточных пакетов, включая проприетарные (Skype, Steam, Spotify и т.д.). Многие из них поддерживаются непосредственно разработчиками.

Подключение Flathub

Подключим Flathub в Fedora из консоли, выполнив следующую команду:

flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Его также можно добавить и из графического режима. Достаточно лишь загрузить repo-файл средствами браузера и открыть его в Gnome Software или другом графическом менеджере пакетов. На вопрос о подключении ответим утвердительно.

Установка пакетов через Flatpak

Установим пакет для текущего пользователя (для этого не требуется повышение прав до суперпользователя):

flatpak --user install flathub com.valvesoftware.Steam

Здесь после команды install указывается репозиторий, откуда данный пакет будет установлен, а также его уникальный идентификатор внутри него.

Графические менеджеры пакетов вроде Gnome Software также поддерживают установку флатпаков. Нужно лишь выбрать интересующий нас пакет на одноимённой странице и нажать кнопку Установить.

Запуск пакетов

flatpak run com.valvesoftware.Steam

Однако в большинстве случаев запускать пакеты вручную не требуется, т.к. актуальная версия Flatpak автоматически создаёт ярлыки в главном меню используемой графической среды пользователя.

Удаление пакетов

Удалим установленный в профиле текущего пользователя пакет:

flatpak --user uninstall com.valvesoftware.Steam
flatpak --user uninstall --unused

Обновление пакетов

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

flatpak --user update

Обновим конкретный пакет посредством flatpak update:

flatpak --user update com.valvesoftware.Steam

Управление Flatpak приложениями

Обновить все Flatpak приложения:

flatpak update

Посмотреть список приложений Flatpak:

flatpak list

Удалить Flatpak приложение:

flatpak remove org.название.приложения

Тонкая настройка Sandbox окружения

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

Политики Flatpak позволяют нам гибко управлять этим посредством команды flatpak override.

Пример 1. Запретим браузеру Firefox доступ к любым каталогам, за исключением стандартного каталога хранения загружаемых файлов:

flatpak --user override --nofilesystem=home --filesystem=xdg-download:rw org.mozilla.Firefox

Пример 2. Запретим клиенту Transmission доступ к домашнему каталогу, за исключением ~/mydir:

flatpak --user override --nofilesystem=home --filesystem=home/mydir:rw com.transmissionbt.Transmission

Более подробную информацию о тонкой настройке можно найти здесь и здесь.

Last updated