Релиз системы самодостаточных пакетов Flatpak 1.6.0

Опубликована новая стабильная ветка инструментария Flatpak 1.6, который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и выполняемым в специальном контейнере, изолирующем приложение от остальной системы. Поддержка выполнения Flatpak-пакетов обеспечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатной программе управления приложениями GNOME.

Ключевые новшества в ветке Flatpak 1.6:

  • В API Portal добавлен метод CreateUpdateMonitor, позволяющий приложениям отслеживать появление обновлений и запрашивать установку появившегося обновления.
    Для запрета полномочий самостоятельной установки обновлений приложением можно использовать команду «flatpak permission-set flatpak updates $APPID no» (если указать «ask» вместо «no», то каждый раз будет выводиться диалог для подтверждения обновления);


  • Для упрощения создания обработчиков предложена библиотека
    libportal, которая даёт возможность обработки событий без прямого использования API Portal и разбора сигналов, приходящих через D-Bus.
    Libportal предоставляет простые асинхронно работающие прослойки для большинства «порталов«;

  • Добавлено новое полномочие «—socket=cups» для предоставления прямого доступа к серверу печати CUPS;
  • Изменены протокол и API для обработки аутентификации. Добавлен аутентификатор для OCI (Open Container Initiative). Реализована поддержка автоматической установки аутентификаторов из внешнего репозитория flatpak. В FlatpakTransaction добавлен callback-обработчик для использования аутентификации по логину и паролю по аналогии с методом аутентификации HTTP basic;
  • Добавлена поддержка защищённых приложений и систем, требующих аутентификации при загрузке;
  • Используемая для изоляции прослойка bubblewrap обновлена до выпуска 0.4.0;
  • Добавлена опциональная поддержка родительского контроля через применение библиотеки libmalcontent, позволяющей ограничить доступ к определённым видам контента;
  • Расширения теперь устанавливаются до приложения, что позволяет получить рабочее приложение сразу после завершения его установки;
  • Переработаны манипуляции с временными файлами, что позволило улучшить работу в условиях недостатка свободного дискового пространства;
  • Для выполнения команды «flatpak enter» больше не требуется использование sudo;
  • В порталы добавлена возможность запуска вложенных изолированных окружений (sub-sandbox) для дочерних процессов;
  • Добавлены новые команды «flatpak permission-set» и «permission-remove» для управления установкой полномочий;
  • Добавлена опция «flatpak install —or-update», выполняющая обновление, если приложение уже установлено;
  • Добавлена команда «flatpak mask» для закрепления версии и запрета установки обновлений;
  • Для образов в формате OCI (Open Container Initiative) добавлена поддержка привязки меток, генерации истории изменений в образе и включения mime-типов docker, помимо mime-типов OCI;
  • В настройки добавлен ключ default-languages для определения списка используемых языков, в дополнение к системному списку.

Напомним, что разработчикам приложений Flatpak даёт возможность упростить распространение своих программ, не входящих в штатные репозитории дистрибутивов, за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Пользователям, заботящимся о безопасности, Flatpak позволяет выполнить вызывающее сомнение приложение в контейнере, предоставив доступ только к сетевым функциям и файлам пользователя, связанным с приложением. Пользователям, интересующимся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений без необходимости внесения изменений в систему. Например, в настоящее время Flatpak-пакеты уже собираются для LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio и т.д.

Для уменьшения размера пакета, он включает лишь специфичные для приложения зависимости, а базовые системные и графические библиотеки (Gtk+, Qt, библиотеки GNOME и KDE и т.п.) оформлены в виде подключаемых типовых runtime-окружений. Ключевое отличие Flatpak от Snap заключается в том, что Snap использует компоненты окружения основной системы и изоляцию на основе фильтрации системных вызовов, в то время как Flatpak создаёт отдельный от системы контейнер и оперирует крупными runtime-наборами, предоставляя в качестве зависимостей не пакеты, а типовые системные окружения (например, все библиотеки, необходимые для работы программ GNOME или KDE).

Помимо типового системного окружения (runtime), устанавливаемого через специальный репозиторий, поставляются дополнительные зависимости (bundle), требуемые для работы приложения. В сумме runtime и bundle образуют начинку контейнера, при том, что runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам, что позволяет обойтись без дублирования общих для контейнеров системных файлов. В одной системе может быть установлено несколько разных runtime (GNOME, KDE) или несколько версий одного runtime (GNOME 3.26, GNOME 3.28). Контейнер с приложением в качестве зависимости использует привязку только к определённому runtime, без учета отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /app.

Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree. Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении.

Формируемое изолированное окружение полностью независимо от используемого дистрибутива, и при надлежащих настройках пакета, не имеет доступа к файлам и процессам пользователя или основной системы, не может напрямую обращаться к оборудованию, за исключением вывода через DRI, и сетевой подсистеме. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено на основе системы обмена сообщениями DBus и специального API Portals. Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio.

Источник: opennet.ru

Добавить комментарий