После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux y se ejecuta en un contenedor especial que aísla la aplicación del resto del sistema. Se proporciona soporte para ejecutar paquetes Flatpak para Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Menta, Alt Linux и UbuntuLos paquetes Flatpak están incluidos en el repositorio de Fedora y son compatibles con los programas de gestión de aplicaciones estándar de GNOME y KDE.
Innovaciones clave en la rama 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 Estudio, etc.
Para reducir el tamaño, en el paquete solo se incluyen dependencias específicas de la aplicación. Las bibliotecas básicas de sistema y gráficos (bibliotecas GTK, Qt, GNOME y KDE, etc.) se suministran en forma de complementos para entornos de ejecución estándar. La diferencia clave entre Flatpak y Snap es que Snap utiliza los componentes del entorno principal del sistema y el aislamiento basado en el filtrado de llamadas del sistema, mientras que Flatpak crea un contenedor separado del sistema y opera con grandes conjuntos de tiempo de ejecución, proporcionando no paquetes como dependencias, sino estándar. entorno del sistema (por ejemplo, todas las bibliotecas necesarias para el funcionamiento de los programas GNOME o KDE).
Además del entorno de sistema estándar (tiempo de ejecución), instalado a través de un repositorio especial, se proporcionan dependencias adicionales (paquete) necesarias para el funcionamiento de la aplicación. En total, "runtime" y "bundle" forman el contenido del contenedor, mientras que "runtime" se instala por separado y se vincula a varios contenedores a la vez, lo que le permite evitar la duplicación de archivos del sistema comunes a los contenedores.
Un sistema puede tener instalados varios “tiempos de ejecución” diferentes (GNOME, KDE) o varias versiones del mismo “tiempo de ejecución” (GNOME 50, GNOME 49). Un contenedor con una aplicación como dependencia utiliza un enlace solo a un tiempo de ejecución específico, sin tener en cuenta los paquetes individuales que forman el tiempo de ejecución seleccionado. Todos los elementos que faltan se empaquetan directamente con la aplicación. Al crear un contenedor, el contenido del "tiempo de ejecución" se monta como la partición /usr y el "paquete" se monta en el directorio /app.
Los contenedores de aplicaciones y tiempo de ejecución se construyen utilizando tecnología OSTree, en la que la imagen se actualiza atómicamente desde un repositorio similar a Git, lo que permite aplicar métodos de control de versiones a los componentes de la distribución (por ejemplo, puede revertir rápidamente el sistema a una versión anterior). estado). Los paquetes RPM se traducen al repositorio OSTree utilizando la capa rpm-ostree.
No se admite la instalación selectiva ni la actualización de paquetes dentro del entorno de trabajo: el sistema no se actualiza a nivel de componentes individuales, sino en su conjunto, cambiando atómicamente su estado. Proporciona herramientas para aplicar actualizaciones de forma incremental, eliminando la necesidad de reemplazar completamente la imagen con cada actualización.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
Para el aislamiento, una capa de plástico de burbujas y tradicional Linux Tecnologías de virtualización de contenedores basadas en el uso de cgroups, espacios de nombres, Seccomp y SELinux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
Fuente: opennet.ru
