После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux 並在一個特殊的容器中執行,該容器將應用程式與系統的其他部分隔離。 Fedora 提供了對運行 Flatpak 軟體包的支援。 CentOS, Debian拱門 LinuxGentoo, Linux 薄荷綠,另類 Linux и UbuntuFlatpak 軟體套件包含在 Fedora 軟體倉庫中,並由標準 GNOME 和 KDE 應用程式管理程式的支援。
Flatpak 1.18 分支的主要創新:
- Реализована поддержка условных полномочий (conditional permission), позволяющих при запросе полномочий проверить наличие определённых возможностей в системе или в runtime. Например, при необходимости получения доступа к устройству ввода вместо «—device=all» можно запросить полномочие «—device-if=all:!has-input-device —device=input», которое предоставит доступ только к устройствам ввода или откатится на доступ ко всем устройствам если выборочное предоставление доступа не поддерживается в runtime. Аналогично можно запросить доступ к USB-устройвствам («has-usb-device» и «has-usb-portal») или совместно используемым подсистемам.
- Разрешён доступ к устройству /dev/ntsync для обращения к
модулю ядра NTSYNC, реализующему набор примитивов для синхронизации, применяемых в ядре Windows NT и позволяющих существенно поднять производительность Windows使用 Wine 啟動的遊戲。 - Для GPU Intel Xe включена поддержка API VA-API для аппаратного ускорения декодирования видео.
- Реализована возможность доступа к устройству /dev/kfd (Kernel Fusion Driver) с использованием полномочий, предоставляемых для DRI-устройств. Драйвер kfd реализует интерфейс для прямого выполнения вычислений на GPU AMD из приложений, использующих AMD ROCm, HIP и OpenCL.
- Добавлена поддержка использования опций командой строки для проброса доступа к каталогам в изолированные приложения.
- Добавлена поддержка каталога «preinstall.d», определяющего список предустанавливаемых Flatpak-приложений (для включения Flatpak-приложений в состав операционной системы).
- Разрешена прямая установка приложений из образов контейнеров в формате OCI, которые могут загружаться из собственных OCI-репозиториев и локальных архивов.
- В команду «flatpak install —from» добавлена поддержка URI «flatpak+https://».
- В команду «flatpak run» добавлена опция «—clear-env» для очистки переменных окружения перед запуском приложения.
- Предоставлена возможность экспорта корневого каталога хост-окружения в изолированное окружение приложения с доступом через каталог /run/host/root.
- Добавлена возможность вывода результата выполнения команд в формате JSON.
- Усилена изоляция сборочного окружения — команда «flatpak build» теперь не предоставляет по умолчанию доступ к хосту.
- Добавлена команда «reinstall» для переустановки зависимостей (bundle).
- Настройки D-Bus по умолчанию перенесены из каталога /etc в /usr.
- Сокращено время запуска при использовании командного интерпретатора fish.
- В libflatpak добавлена функция для получения информации о времени создания конфигурации, что позволяет приложениям, таким как GNOME Software, определить, что прокэшированные ими данные требуют обновления.
- Удалена сборочная опция http_backend, вместо libsoup2 для загрузки по HTTP/HTTPS задействована библиотека libcurl.
- По умолчанию включено использование escape-последовательностей для индикации прогресса выполнения операции.
- Разрешено передавать права доступа к устройствам во вложенные sandbox-окружения, созданные через порталы Flatpak.
- Для приложений, поставляемых в форме OCI-образов, реализован механизм «extra-data», например, позволяющий организовать воспроизведение видео h.265 во Flatpak-пакетах Fedora Linux.
- Добавлена поддержка сжатия зависимостей (OCI bundle) с использованием алгоритма zstd, более эффективно сжимающего данные. По умолчанию для сжатия продолжает использоваться gzip, обеспечивающий максимальную совместимость.
Flatpak упрощает распространение программ, не входящих в штатные репозитории дистрибутивов, за счёт подготовки одного универсального контейнера, избавляющего разработчиков программ от необходимости формировать отдельные сборки для каждого дистрибутива. Пользователям, заботящимся о безопасности, Flatpak даёт возможность выполнить вызывающее сомнение приложение в контейнере, предоставив выборочный доступ только к необходимым сетевым функциям и файлам пользователя. Пользователям, интересующимся новинками, Flatpak позволяет установить самые свежие тестовые и стабильные выпуски приложений без необходимости внесения изменений в систему. Например, Flatpak-пакеты собираются для LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android 工作室等。
為了減小大小,包中僅包含特定於應用程式的依賴項。基本系統和圖形庫(GTK、Qt、GNOME 和 KDE 庫等)以插件標準運行時環境的形式提供。 Flatpak 和Snap 之間的主要區別在於,Snap 使用主系統環境的元件並基於過濾系統呼叫進行隔離,而Flatpak 創建一個與系統分離的容器並使用大型運行時集進行操作,不提供套件作為依賴項,而是提供標準系統環境(例如,GNOME 或 KDE 程式運行所需的所有庫)。
除了透過特殊儲存庫安裝的標準系統環境(運行時)之外,還提供應用程式運行所需的附加相依性(捆綁包)。總的來說,「運行時」和「捆綁」構成了容器的內容,而「運行時」是單獨安裝的,並同時綁定到多個容器,這使您可以避免重複容器共有的系統檔案。
一個系統可以安裝多個不同的「運行時」(GNOME、KDE)或同一「運行時」的多個版本(GNOME 50、GNOME 49)。以應用程式作為依賴項的容器僅使用與特定運行時的綁定,而不考慮形成所選運行時的各個套件。所有缺少的元素都直接與應用程式打包在一起。建立容器時,「runtime」的內容被掛載為/usr分割區,「bundle」被掛載在/app目錄中。
運行時和應用程式容器是使用 OSTree 技術建立的,其中映像從類似 Git 的儲存庫自動更新,這允許將版本控制方法應用於分發元件(例如,您可以快速將系統回滾到先前的版本)狀態)。 RPM 套件使用 rpm-ostree 層轉換到 OSTree 儲存庫。
不支援在工作環境中選擇性安裝和更新軟體包 - 系統不是在單一元件的層級上更新,而是作為一個整體,原子地更改其狀態。提供增量應用更新的工具,無需每次更新都完全替換映像。
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
為了隔熱,可以使用氣泡膜層和傳統方法 Linux 基於 cgroups、命名空間、Seccomp 和 SE 的容器虛擬化技術Linux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
來源: opennet.ru
