После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux və tətbiqi sistemin qalan hissəsindən təcrid edən xüsusi bir konteynerdə icra edilir. Fedora üçün Flatpak paketlərinin işləməsi üçün dəstək təmin edilir, CentOS, Debian, Arch Linux, Gentoo, Linux Nanə, Alt Linux и UbuntuFlatpak paketləri Fedora depolarına daxildir və standart GNOME və KDE tətbiq idarəetmə proqramlarında dəstəklənir.
Flatpak 1.18 filialında əsas yeniliklər:
- Реализована поддержка условных полномочий (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-Şərab istifadə edərək işə salınan oyunlar. - Для 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 Studiya və s.
Ölçüsü azaltmaq üçün paketə yalnız proqrama aid olan asılılıqlar daxildir. Əsas sistem və qrafika kitabxanaları (GTK, Qt, GNOME və KDE kitabxanaları və s.) plug-in standart iş vaxtı mühitləri şəklində təqdim olunur. Flatpak və Snap arasındakı əsas fərq ondan ibarətdir ki, Snap əsas sistem mühitinin komponentlərindən və sistem çağırışlarının süzülməsinə əsaslanan izolyasiyadan istifadə edir, Flatpak isə sistemdən ayrı bir konteyner yaradır və paketləri asılılıq kimi deyil, standart təmin edən böyük iş vaxtı dəstləri ilə işləyir. sistem mühiti (məsələn, GNOME və ya KDE proqramlarının işləməsi üçün lazım olan bütün kitabxanalar).
Xüsusi repozitoriya vasitəsilə quraşdırılmış standart sistem mühitinə (iş vaxtı) əlavə olaraq, tətbiqin işləməsi üçün tələb olunan əlavə asılılıqlar (paket) verilir. Ümumilikdə, "iş vaxtı" və "paket" konteynerin məzmununu təşkil edir, "işləmə vaxtı" isə ayrıca quraşdırılır və eyni anda bir neçə konteynerə bağlanır ki, bu da konteynerlər üçün ümumi sistem fayllarının təkrarlanmasının qarşısını almağa imkan verir.
Bir sistemdə quraşdırılmış bir neçə fərqli “işləmə vaxtı” (GNOME, KDE) və ya eyni “işləmə vaxtının” bir neçə versiyası (GNOME 50, GNOME 49) ola bilər. Asılılıq kimi tətbiqi olan konteyner seçilmiş icra müddətini təşkil edən fərdi paketləri nəzərə almadan yalnız müəyyən iş vaxtı üçün bağlamadan istifadə edir. Bütün çatışmayan elementlər birbaşa proqramla paketlənir. Konteyner yaratarkən, "iş vaxtı" məzmunu /usr bölməsi kimi quraşdırılır və "paket" /app qovluğunda quraşdırılır.
İş vaxtı və tətbiq konteynerləri OSTree texnologiyasından istifadə edərək qurulur, burada görüntü Git-ə bənzər repozitoriyadan atomik şəkildə yenilənir və bu, paylama komponentlərinə versiyaya nəzarət üsullarını tətbiq etməyə imkan verir (məsələn, sistemi tez bir zamanda əvvəlki vəziyyətə qaytara bilərsiniz. dövlət). RPM paketləri rpm-ostree qatından istifadə edərək OSTree repozitoriyasına tərcümə olunur.
İş mühiti daxilində paketlərin seçmə quraşdırılması və yenilənməsi dəstəklənmir - sistem fərdi komponentlər səviyyəsində deyil, bütövlükdə vəziyyətini atomik şəkildə dəyişdirərək yenilənir. Hər yeniləmə ilə şəklin tamamilə dəyişdirilməsi ehtiyacını aradan qaldıraraq, yeniləmələri tədricən tətbiq etmək üçün alətlər təqdim edir.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
İzolyasiya üçün Bubblewrap təbəqəsi və ənənəvi Linux cqrupları, ad fəzaları, Seccomp və SE istifadəsinə əsaslanan konteyner virtuallaşdırma texnologiyalarıLinux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
Mənbə: opennet.ru
