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


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

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

  • Упрощена реализация установки в режиме P2P (позволяет организовать загрузку приложений и runtime-наборов через промежуточные узлы или накопители для систем без сетевого подключения). Прекращена поддержка установки через промежуточные хосты в локальной сети. Отключена по умолчанию автоматическая загрузка репозиториев (sideload), размещённых на локальных USB-накопителях. Для активации промежуточных локальных репозиториев следует настроить репозиторий через создание символической ссылки из /var/lib/flatpak/sideload-repos или /run/flatpak/sideload-repos. Изменение позволило упростить внутреннюю реализацию режима P2P и повысить его эффективность.
  • Добавлен опциональный systemd unit для автоматического определения дополнительных репозиториев на подключённых внешних USB-накопителях.
  • Для приложений, имеющих доступ к файловой системе, обеспечен проброс каталога /lib хост-окружения в /run/host/lib.
  • Добавлены новые полномочия доступа к ФС - "host-etc" и "host-os", позволяющие получить доступ к системным каталогам /etc и /usr.
  • Для генерации более эффективного кода разбора файлов GVariant из ostreee задействован variant-schema-compiler.
  • В сборочном крипте configure предоставлена возможность сборки без libsystemd;
  • Обеспечено монтирование сокетов Journal в режиме только для чтения.
  • В document-export добавлена поддержка экспорта каталогов.
  • Разрешён прямой доступ к звуковым устройствам ALSA для приложений, имеющих доступ к Pulseaudio.
  • В API FlatpakTransaction добавлен сигнал "install-authenticator", который может использоваться клиентами для установки аутентификаторов, необходимых для совершения транзакции.
  • Обеспечено использование данных о часовом поясе на основе /etc/localtime из хост-системы, что решило связанные с часовыми поясами проблемы в некоторых приложениях.
  • Прекращена установка файла env.d из gdm, так как генераторы systemd лучше справляются с этой задачей.
  • В утилите create-usb по умолчанию включён экспорт частичных коммитов.
  • Обеспечена поставка файла sysusers.d для создания через systemd необходимых пользователей.
  • В команды "flatpak remote-add" и "flatpak modify" добавлена опция "--\[no-\]follow-redirect" для запрета/разрешения перенаправления на другой репозиторий.
  • В систему порталов добавлен API Spawn для получения реального идентификатора процесса (PID) запущенного приложения.
  • Все репозитории OCI (Open Container Initiative) переведены на использование аутентификатора flatpak-oci-authenticator.
  • В команды "flatpak remote-info" и "flatpak update" добавлена опция "--commit=" для задания определённой версии репозиториев OCI.
  • Добавлена начальная поддержка delta-обновлений для репозиториев OCI.
  • Добавлена команда "flatpak upgrade", которая является псевдонимом команды "flatpak update".
  • Реализованы сценарии дополнения ввода для командной оболочки fish.

Напомним, что разработчикам приложений Flatpak даёт возможность упростить распространение своих программ, не входящих в штатные репозитории дистрибутивов за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Пользователям, заботящимся о безопасности, Flatpak позволяет выполнить вызывающее сомнение приложение в контейнере, предоставив доступ только к сетевым функциям и файлам пользователя, связанным с приложением. Пользователям, интересующимся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений без необходимости внесения изменений в систему. Например, в настоящее время Flatpak-пакеты уже собираются для LibreOffice, Midori, 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.

Источник: https://www.opennet.ru/opennews/art.shtml?num=53229


Comments 0