После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux kaj plenumata en speciala ujo kiu izolas la aplikaĵon de la resto de la sistemo. Subteno por funkciigi Flatpak-pakaĵojn estas provizita por Fedora, CentOS, Debian, Arko Linux, Gentoo, Linux Mento, Alt Linux и UbuntuPakaĵoj Flatpak estas inkluzivitaj en la Fedora deponejo kaj estas subtenataj en la normaj GNOME kaj KDE aplikaĵaj administraj programoj.
Ŝlosilaj novigoj en la branĉo 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-ludoj lanĉitaj per 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 Studio, ktp.
Por redukti grandecon, nur aplikaĵ-specifaj dependecoj estas inkluzivitaj en la pakaĵo. Bazaj sistemoj kaj grafikaj bibliotekoj (bibliotekoj GTK, Qt, GNOME kaj KDE, ktp.) estas liveritaj en formo de aldonaĵaj normaj rultempaj medioj. La ŝlosila diferenco inter Flatpak kaj Snap estas, ke Snap uzas la komponantojn de la ĉefa sistema medio kaj izoladon bazitan sur filtraj sistemvokoj, dum Flatpak kreas ujon apartan de la sistemo kaj funkcias kun grandaj rultempaj aroj, provizante ne pakaĵojn kiel dependecojn, sed normajn. sistema medio (ekzemple, ĉiuj bibliotekoj necesaj por la funkciado de GNOME aŭ KDE-programoj).
Aldone al la norma sistema medio (rultempo), instalita per speciala deponejo, aldonaj dependecoj (fasko) necesaj por la funkciado de la aplikaĵo estas liveritaj. Entute, "runtime" kaj "fasko" formas la enhavon de la ujo, dum "runtime" estas instalita aparte kaj ligita al pluraj ujoj samtempe, kio ebligas al vi eviti duobligi sistemajn dosierojn komunajn al ujoj.
Unu sistemo povas havi plurajn malsamajn "rultempojn" instalitajn (GNOME, KDE) aŭ plurajn versiojn de la sama "rultempo" (GNOME 50, GNOME 49). Ujo kun aplikaĵo kiel dependeco uzas ligon nur al specifa rultempo, sen konsideri la individuajn pakaĵojn kiuj formas la elektitan rultempon. Ĉiuj mankantaj elementoj estas enpakitaj rekte kun la aplikaĵo. Dum kreado de ujo, la enhavo de "runtime" estas muntita kiel la /usr-diskodo, kaj "fasko" estas muntita en la dosierujo /app.
La rultempo kaj aplikaĵaj ujoj estas konstruitaj per OSTree-teknologio, en kiu la bildo estas atome ĝisdatigita de Git-simila deponejo, kio ebligas aplikitajn metodojn de versio-kontrolo al distribuaj komponantoj (ekzemple, vi povas rapide retroiri la sistemon al antaŭa. ŝtato). RPM-pakaĵoj estas tradukitaj en la OSTree-deponejon uzante la rpm-ostree-tavolon.
Selektema instalado kaj ĝisdatigo de pakaĵoj ene de la labormedio ne estas subtenataj - la sistemo estas ĝisdatigita ne je la nivelo de individuaj komponantoj, sed entute, atome ŝanĝante sian staton. Provizas ilojn por apliki ĝisdatigojn pliige, forigante la bezonon tute anstataŭigi la bildon kun ĉiu ĝisdatigo.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
Por izolado, vezikfolia tavolo kaj tradicia Linux konteneraj virtualigaj teknologioj bazitaj sur la uzo de cgrupoj, nomspacoj, Seccomp kaj SELinux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
fonto: opennet.ru
