Опубликована новая стабильная ветка инструментария Flatpak 1.14, который предоставляет систему для сборки самодостаточных пакетов, не привязанных к конкретным дистрибутивам Linux и выполняемых в специальном контейнере, изолирующем приложение от остальной системы. Поддержка выполнения Flatpak-пакетов обеспечена для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux и Ubuntu. Пакеты с Flatpak включены в репозиторий Fedora и поддерживаются в штатной программе управления приложениями GNOME.
Ключевые новшества в ветке Flatpak 1.14:
- Обеспечено создание каталога для файлов в состоянием (.local/state) и выставление указывающей на этот каталог переменной окружения XDG_STATE_HOME.
- Добавлены условные проверки вида «have-kernel-module-имя» для определения наличия модулей ядра (универсальный аналог ранее предлагаемой проверке have-intel-gpu, вместо которой теперь можно использовать выражение «have-kernel-module-i915»).
- Реализована команда «flatpak document-unexport —doc-id=…».
- Обеспечен экспорт метаданных Appstream для использования в основном окружении.
- Добавлены правила автодополнения команд flatpak для командной оболочки Fish
- Разрешён сетевой доступ к сервисам X11 и PulseAudio (при добавлении соответствующих настроек).
- Основная ветка в Git-репозитории переименована с «master» на «main», так как слово «master» считается последнее время неполиткорректным.
- Обеспечена перезапись скриптов запуска в случае переименования приложения.
- В команду install добавлены опции «—include-sdk» и «—include-debug» для установки SDK и файлов debuginfo.
- В файлы flatpakref и flatpakrepo добавлена поддержка параметра «DeploySideloadCollectionID», при установке которого идентификатор коллекции будет выставлен во время добавления удалённого репозитория, а не после загрузки метаданных.
- Разрешено создание вложенных sandbox-окружений для обработчиков в сеансах с отдельными именами MPRIS (Media Player Remote Interfacing Specification).
- В утилитах командной строки обеспечен вывод сведений об использовании устаревших runtime-расширений.
- В команде uninstall реализован запрос подтверждения перед удалением runtime или runtime-расширений, которые ещё используются.
- В команды подобные «flatpak run» добавлена поддержка опции «—socket=gpg-agent».
- В libostree устранена уязвимость, потенциально позволяющая пользователю удалить произвольные файлы в системе через манипуляции с обработчиком flatpak-system-helper (отправке запроса на удаление со специально оформленным именем ветки). Проблема проявляется только в старых версиях Flatpak и libostree, выпущенных до 2018 года (< 0.10.2), и не затрагивает актуальные выпуски.
Kujtojmë se Flatpak ofron mundësinë për zhvilluesit e aplikacioneve të lehtësojnë shpërndarjen e programeve të tyre, të cilat nuk janë pjesë e depozitave standarde, përmes përgatitjes së një konteineri universali pa formimin e ndarë të ndërtimeve për çdo shpërndarje. Për përdoruesit e shqetësuar për sigurinë, Flatpak lejon ekzekutimin e aplikacioneve të dyshimta në një konteiner, duke ofruar qasje vetëm në funksionalitetet rrjet dhe skedarët e përdoruesit të lidhur me aplikacionin. Për përdoruesit e interesuar për novitetet, Flatpak lejon instalimin e versioneve më të fundit testuese dhe të qëndrueshme të aplikacioneve pa pasur nevojë për ndryshime në sistem. Për shembull, paketat Flatpak ndërtohen për LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, etj.
Për të zvogëluar madhësinë e paketës, ajo përfshin vetëm varësitë specifike për aplikacionin, ndërsa bibliotekat themelore sistemore dhe grafike (GTK, Qt, bibliotekat GNOME dhe KDE, etj.) janë formatuar si runtime me modul të lidhur. Dallimi kryesor mes Flatpak dhe Snap është se Snap përdor komponentët e ambientit të sistemit kryesor dhe izolimin në bazë të filtrimit të thirrjeve sistemore, ndërsa Flatpak krijon një konteiner të veçantë nga sistemi dhe operon me grupe të mëdha runtime, duke ofruar si varësi jo paketa, por ambiente sistemore të modelit (për shembull, të gjitha bibliotekat e nevojshme për funksionimin e programeve GNOME ose KDE).
Përveç ambientit sistemor të standardizuar (runtime), i cili instalohet përmes një depozite të veçantë, ofrohen varësi të tjera (bundle) të nevojshme për të funksionuar aplikacionin. Në total, runtime dhe bundle formojnë përbërësin e konteinerit, duke kaluar runtime-n e instaluar veçmas dhe që lidhet menjëherë me disa konteinerë, që lejon të shmangen dublikatat e skedarëve sistemorë të zakonshëm për konteinerët. Në një sistem mund të instalohet disa runtime të ndryshme (GNOME, KDE) ose disa versione të njëjtit runtime (GNOME 3.40, GNOME 3.42). Konteineri me aplikacionin si varësi përdor lidhjen vetëm me një runtime të caktuar, pa marrë parasysh paketa të veçanta që përbëjnë atë runtime. Të gjitha elementet e munguar paketohen drejtpërdrejt së bashku me aplikacionin. Në formimin e konteinerit, përmbajtja e runtime çmontohet si pjesë e /usr, ndërsa bundle monton në dosjen /app.
Përmbajtja e runtime dhe konteinerëve të aplikacioneve ndërtuar me teknologjinë OSTree, ku imazhi përditësohet në mënyrë atomike nga një depo si Git, duke lejuar përdorimin e metodave të kontrollit të versioneve për komponentët e distribucionit (p.sh., mund të kthehemi shpejt në një gjendje të kaluar). Paketat RPM përkthehen në depo OSTree përmes një shtrese të veçantë rpm-ostree. Instalimi dhe përditësimi i veçorive brenda mjedisit të punës nuk mbështetet, sistemi përditësohet jo në nivelin e veçorive të veçanta, por në mënyrë të plotë, duke ndryshuar atomikisht gjendjen e tij. Ofrihen mjete për aplikimin inkremental të përditësimeve, duke eliminuar nevojën për një zëvendësim të plotë të imazhit me çdo përditësim.
Mjedisi izoluar i krijuar është plotësisht i pavarur nga distribucioni i përdorur dhe, me konfigurimet e duhura të paketave, nuk ka akses në skedarët dhe proceset e përdoruesit apo të sistemit kryesor, nuk mund të drejtohet drejtpërdrejt te pajisja, përveç daljes përmes DRI, dhe kërkesave për nënstrukturën rrjet. Dalja grafike dhe organizimi i hyrjes realizohen përmes protokollit Wayland ose përmes kalimit të soketeve X11. Ndërveprimi me ambientin e jashtëm ndërt është mbi sistemin e shkëmbimit të mesazheve DBus dhe një API të veçantë Portals.
Для изоляции используется прослойка Bubblewrap и традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces), Seccomp и SELinux. Для вывода звука применяется PulseAudio. При этом изоляция может быть отключена, чем пользуются разработчики многих популярных пакетов для получения полного доступа к ФС и всем устройствам в системе. Например, с ограниченным режимом изоляции, оставляющим полный доступ к домашнему каталогу, поставляются пакеты GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity и VLC. В случае компрометации пакетов с доступом к домашнему каталогу, несмотря на наличие в описании пакета метки «sandboxed», атакующему для выполнения своего кода достаточно изменить файл ~/.bashrc. Отдельным вопросом является контроль за внесением изменений в пакеты и доверие к сборщикам пакетов, которые часто не связаны с основным проектом или дистрибутивами.
Burimi: opennet.ru
