После полутора лет разработки опубликована новая стабильная ветка инструментария Flatpak 1.18, предоставляющего систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux და შესრულებულია სპეციალურ კონტეინერში, რომელიც აპლიკაციას სისტემის დანარჩენი ნაწილისგან გამოყოფს. Flatpak პაკეტების გაშვების მხარდაჭერა უზრუნველყოფილია Fedora-სთვის, 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). კონტეინერი აპლიკაციით, როგორც დამოკიდებულებით, იყენებს შეკვრას მხოლოდ კონკრეტულ გაშვების დროზე, ცალკეული პაკეტების გათვალისწინების გარეშე, რომლებიც ქმნიან არჩეულ გაშვებას. ყველა დაკარგული ელემენტი შეფუთულია პირდაპირ აპლიკაციასთან. კონტეინერის შექმნისას, "runtime"-ის შიგთავსი დამონტაჟებულია /usr დანაყოფის სახით, ხოლო "bundle" დამონტაჟებულია /app დირექტორიაში.
გაშვების დრო და აპლიკაციის კონტეინერები აგებულია OSTree ტექნოლოგიის გამოყენებით, რომელშიც სურათი ატომურად განახლებულია Git-ის მსგავსი საცავიდან, რაც საშუალებას აძლევს ვერსიის კონტროლის მეთოდების გამოყენებას განაწილების კომპონენტებზე (მაგალითად, შეგიძლიათ სწრაფად დააბრუნოთ სისტემა წინაზე. სახელმწიფო). RPM პაკეტები ითარგმნება OSTree საცავში rpm-ostree ფენის გამოყენებით.
სამუშაო გარემოში პაკეტების შერჩევითი ინსტალაცია და განახლება არ არის მხარდაჭერილი - სისტემა განახლებულია არა ცალკეული კომპონენტების დონეზე, არამედ მთლიანობაში, ატომურად ცვლის მის მდგომარეობას. უზრუნველყოფს ინსტრუმენტებს განახლებების ეტაპობრივად გამოყენებისთვის, რაც გამორიცხავს სურათის სრულად ჩანაცვლების აუცილებლობას ყოველი განახლებით.
Формируемое изолированное окружение не зависит от используемого дистрибутива и при надлежащих настройках пакета не имеет доступа к файлам и процессам пользователя или основной системы, а также не может напрямую обращаться к оборудованию, за исключением вывода через DRI. Вывод графики и организация ввода реализованы при помощи протокола Wayland или через проброс сокета X11. Взаимодействие с внешней средой построено через систему обмена сообщениями DBus и специальный API Portals.
იზოლაციისთვის, ბუშტუკოვანი შესაფუთი ფენა და ტრადიციული Linux კონტეინერის ვირტუალიზაციის ტექნოლოგიები, რომლებიც დაფუძნებულია cgroups-ის, სახელთა სივრცეების, Seccomp-ისა და SE-ს გამოყენებაზე.Linux. При создании пакета изоляция может быть отключена, чем пользуются разработчики некоторых пакетов для получения полного доступа к ФС и всем устройствам в системе.
წყარო: opennet.ru
