После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux và được thực thi trong một vùng chứa đặc biệt, cách ly ứng dụng khỏi phần còn lại của hệ thống. Fedora hỗ trợ chạy các gói Flatpak. CentOS, Debian, Arch LinuxGentoo, Linux Bạc hà, Alt Linux и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатных программах управления приложениями GNOME и KDE.
Những cải tiến chính trong nhánh 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- Các trò chơi được khởi chạy bằng 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 Phòng thu, v.v.
Để giảm kích thước, chỉ các phần phụ thuộc dành riêng cho ứng dụng mới được đưa vào gói. Các thư viện đồ họa và hệ thống cơ bản (thư viện GTK, Qt, GNOME và KDE, v.v.) được cung cấp dưới dạng môi trường thời gian chạy tiêu chuẩn plug-in. Sự khác biệt chính giữa Flatpak và Snap là Snap sử dụng các thành phần của môi trường hệ thống chính và sự cô lập dựa trên các cuộc gọi hệ thống lọc, trong khi Flatpak tạo một vùng chứa tách biệt khỏi hệ thống và hoạt động với các bộ thời gian chạy lớn, không cung cấp các gói dưới dạng phụ thuộc mà là tiêu chuẩn. môi trường của hệ thống (ví dụ: tất cả các thư viện cần thiết cho hoạt động của các chương trình Gnome hoặc KDE).
Ngoài môi trường hệ thống tiêu chuẩn (thời gian chạy), được cài đặt thông qua một kho lưu trữ đặc biệt, các phần phụ thuộc (gói) bổ sung cần thiết cho hoạt động của ứng dụng cũng được cung cấp. Tổng cộng, “thời gian chạy” và “gói” tạo thành nội dung của vùng chứa, trong khi “thời gian chạy” được cài đặt riêng biệt và gắn với nhiều vùng chứa cùng một lúc, điều này cho phép bạn tránh sao chép các tệp hệ thống chung cho vùng chứa.
Một hệ thống có thể được cài đặt nhiều “thời gian chạy” khác nhau (GNOME, KDE) hoặc nhiều phiên bản của cùng một “thời gian chạy” (GNOME 50, GNOME 49). Một vùng chứa có ứng dụng làm phần phụ thuộc chỉ sử dụng liên kết với một thời gian chạy cụ thể mà không tính đến các gói riêng lẻ tạo thành thời gian chạy đã chọn. Tất cả các yếu tố còn thiếu được đóng gói trực tiếp với ứng dụng. Khi tạo vùng chứa, nội dung của "thời gian chạy" được gắn dưới dạng phân vùng /usr và "gói" được gắn trong thư mục /app.
Bộ chứa thời gian chạy và ứng dụng được xây dựng bằng công nghệ OSTree, trong đó hình ảnh được cập nhật nguyên tử từ kho lưu trữ giống như Git, cho phép áp dụng các phương pháp kiểm soát phiên bản cho các thành phần phân phối (ví dụ: bạn có thể nhanh chóng khôi phục hệ thống về phiên bản trước đó). tình trạng). Các gói RPM được dịch sang kho lưu trữ OSTree bằng cách sử dụng lớp RPM-ostree.
Không hỗ trợ cài đặt và cập nhật có chọn lọc các gói trong môi trường làm việc - hệ thống được cập nhật không phải ở cấp độ các thành phần riêng lẻ mà ở cấp độ tổng thể, thay đổi trạng thái của nó một cách nguyên tử. Cung cấp các công cụ để áp dụng các bản cập nhật tăng dần, loại bỏ nhu cầu thay thế hoàn toàn hình ảnh sau mỗi bản cập nhật.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
Для изоляции используется прослойка Bubblewrap и традиционные для Linux Các công nghệ ảo hóa container dựa trên việc sử dụng cgroups, namespaces, Seccomp và SE.Linux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
Nguồn: opennet.ru
