После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux жана тиркемени системанын калган бөлүгүнөн бөлүп турган атайын контейнерде аткарылат. Fedora үчүн Flatpak пакеттерин иштетүүнү колдоо каралган, CentOS, Debian, Арка Linux, Гентоо, 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) болушу мүмкүн. Көз карандылык катары тиркемени камтыган контейнер тандалган иштөө убактысын түзгөн жеке пакеттерди эсепке албастан, белгилүү бир иштөө убактысына гана байланыштырат. Бардык жетишпеген элементтер тиркеме менен түздөн-түз пакеттелген. Контейнерди түзүүдө "иштөө убактысынын" мазмуну /usr бөлүмү катары орнотулат, ал эми "пакет" /app каталогуна орнотулат.
Иштөө убактысы жана колдонмо контейнерлери OSTree технологиясын колдонуу менен курулган, мында сүрөт Git сыяктуу репозиторийден атомдук түрдө жаңыртылып, версияны башкаруу ыкмаларын бөлүштүрүү компоненттерине колдонууга мүмкүндүк берет (мисалы, сиз системаны мурункуга тез кайтара аласыз. мамлекет). RPM пакеттери rpm-ostree катмарын колдонуу менен OSTree репозиторийине которулат.
Иш чөйрөсүндө топтомдорду тандап орнотуу жана жаңыртуу колдоого алынбайт - система жеке компоненттердин деңгээлинде эмес, бүтүндөй өзүнүн абалын атомдук түрдө өзгөртүп жаңыртылып турат. Ар бир жаңыртуу менен сүрөттү толугу менен алмаштыруу зарылдыгын жок кылып, жаңыртууларды кадам сайын колдонуу үчүн куралдар менен камсыз кылат.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
Жылуулоо үчүн, Bubblewrap катмары жана салттуу Linux cgroups, namespaces, Seccomp жана SE колдонууга негизделген контейнердик виртуалдаштыруу технологияларыLinux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
Source: opennet.ru
