Vydání systému samostatných balíčků Flatpak 1.14.0

Byla zveřejněna nová stabilní větev sady nástrojů Flatpak 1.14, která poskytuje systém pro vytváření samostatných balíčků, které nejsou vázány na konkrétní linuxové distribuce a běží ve speciálním kontejneru, který izoluje aplikaci od zbytku systému. Podpora spouštění balíčků Flatpak je poskytována pro Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux a Ubuntu. Balíčky Flatpak jsou součástí úložiště Fedory a jsou podporovány nativním správcem aplikací GNOME.

Klíčové inovace ve větvi Flatpak 1.14:

  • Je možné vytvořit adresář pro soubory ve stavu (.local/state) a nastavit proměnnou prostředí XDG_STATE_HOME ukazující na tento adresář.
  • Přidány podmíněné kontroly tvaru „have-kernel-module-name“ k určení přítomnosti modulů jádra (univerzální obdoba dříve navrhované kontroly have-intel-gpu, místo níž výraz „have-kernel-module-i915 ” lze nyní použít).
  • Byl implementován příkaz „flatpak document-unexport —doc-id=…“.
  • Je poskytován export metadat Appstream pro použití v hlavním prostředí.
  • Přidána pravidla pro dokončení příkazu flatpak pro prostředí Fish
  • Síťový přístup ke službám X11 a PulseAudio je povolen (pokud jsou přidána příslušná nastavení).
  • Hlavní větev v úložišti Git byla přejmenována z „master“ na „main“, protože slovo „master“ bylo nedávno považováno za politicky nekorektní.
  • Spouštěcí skripty jsou nyní přepsány, pokud je aplikace přejmenována.
  • Do příkazu install byly přidány možnosti „--include-sdk“ a „--include-debug“ pro instalaci souborů SDK a debuginfo.
  • Přidána podpora parametru „DeploySideloadCollectionID“ do souborů flatpakref a flatpakrepo. Je-li nastaveno, bude ID kolekce nastaveno při přidávání vzdáleného úložiště, nikoli po načtení metadat.
  • Povoleno vytváření vnořených prostředí sandbox pro handlery v relacích se samostatnými názvy MPRIS (Media Player Remote Interfacing Specification).
  • Nástroje příkazového řádku nyní poskytují informace o použití zastaralých rozšíření běhového prostředí.
  • Příkaz uninstall implementuje požadavek na potvrzení před odebráním běhového prostředí nebo rozšíření běhového prostředí, která se stále používají.
  • Přidána podpora pro volbu „--socket=gpg-agent“ k příkazům jako „flatpak run“.
  • V libostree byla opravena chyba zabezpečení, která by mohla umožnit uživateli odstranit libovolné soubory v systému prostřednictvím manipulace s obslužným programem flatpak-system-helper (odeslání požadavku na odstranění se speciálně formátovaným názvem větve). Problém se objevuje pouze ve starších verzích Flatpak a libostree vydaných před rokem 2018 (< 0.10.2) a neovlivňuje aktuální vydání.

Připomeňme, že Flatpak umožňuje vývojářům aplikací zjednodušit distribuci jejich programů, které nejsou zahrnuty ve standardních distribučních repozitářích, tím, že připraví jeden univerzální kontejner bez vytváření samostatných sestavení pro každou distribuci. Pro uživatele, kteří si uvědomují bezpečnost, Flatpak umožňuje spouštět spornou aplikaci v kontejneru a poskytuje přístup pouze k síťovým funkcím a uživatelským souborům spojeným s aplikací. Uživatelům se zájmem o nové produkty umožňuje Flatpak instalovat nejnovější testovací a stabilní verze aplikací bez nutnosti provádět změny v systému. Například balíčky Flatpak jsou vytvořeny pro LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio atd.

Aby se zmenšila velikost balíčku, obsahuje pouze závislosti specifické pro aplikaci a základní systémové a grafické knihovny (GTK, Qt, GNOME a KDE knihovny atd.) jsou navrženy jako plug-in standardní runtime prostředí. Klíčový rozdíl mezi Flatpak a Snap je v tom, že Snap používá komponenty hlavního systémového prostředí a izolaci založenou na filtrování systémových volání, zatímco Flatpak vytváří kontejner oddělený od systému a pracuje s velkými runtime sadami, které neposkytují balíčky jako závislosti, ale standard. systémová prostředí (například všechny knihovny nezbytné pro provoz programů GNOME nebo KDE).

Kromě standardního systémového prostředí (runtime), instalovaného prostřednictvím speciálního úložiště, jsou dodávány další závislosti (bundle) potřebné pro provoz aplikace. Celkově runtime a bundle tvoří náplň kontejneru, a to navzdory skutečnosti, že runtime se instaluje samostatně a je svázáno s několika kontejnery najednou, což vám umožňuje vyhnout se duplikaci systémových souborů společných pro kontejnery. Jeden systém může mít nainstalovaných několik různých runtime (GNOME, KDE) nebo několik verzí stejného runtime (GNOME 3.40, GNOME 3.42). Kontejner s aplikací jako závislostí používá vazbu pouze na konkrétní běhové prostředí, bez zohlednění jednotlivých balíčků, které běhové prostředí tvoří. Všechny chybějící prvky jsou zabaleny přímo s aplikací. Když se vytvoří kontejner, obsah runtime se připojí jako oddíl /usr a svazek se připojí do adresáře /app.

Runtime a aplikační kontejnery jsou vytvořeny pomocí technologie OSTree, ve které je obraz atomicky aktualizován z úložiště podobného Gitu, což umožňuje použití metod řízení verzí na distribuční komponenty (například můžete rychle vrátit systém zpět na předchozí stav). Balíčky RPM se překládají do úložiště OSTree pomocí speciální vrstvy rpm-ostree. Samostatná instalace a aktualizace balíčků v rámci pracovního prostředí není podporována, systém se neaktualizuje na úrovni jednotlivých komponent, ale jako celek atomicky mění svůj stav. Poskytuje nástroje pro postupnou aplikaci aktualizací, takže není nutné při každé aktualizaci zcela nahrazovat bitovou kopii.

Vygenerované izolované prostředí je zcela nezávislé na použité distribuci a při správném nastavení balíčku nemá přístup k souborům a procesům uživatele ani hlavního systému, nemůže přímo přistupovat k zařízení, s výjimkou výstupu přes DRI, a volání do síťového subsystému. Organizace grafických výstupů a vstupů je realizována pomocí protokolu Wayland nebo přes X11 socket forwarding. Interakce s vnějším prostředím je založena na systému zasílání zpráv DBus a speciálním Portals API.

Pro izolaci se používá vrstva Bubblewrap a tradiční technologie virtualizace kontejnerů Linuxu, založené na použití cgroups, jmenných prostorů, Seccomp a SELinux. PulseAudio se používá k výstupu zvuku. V tomto případě lze izolaci zakázat, čehož využívají vývojáři mnoha oblíbených balíčků k získání plného přístupu k systému souborů a všem zařízením v systému. Například GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity a VLC přicházejí s omezeným režimem izolace, který ponechává plný přístup k domovskému adresáři. Pokud jsou kompromitovány balíčky s přístupem do domovského adresáře, navzdory přítomnosti štítku „sandboxed“ v popisu balíčku, útočníkovi stačí změnit soubor ~/.bashrc, aby mohl spustit svůj kód. Samostatnou otázkou je kontrola změn balíčků a důvěra v tvůrce balíčků, kteří často nejsou spojeni s hlavním projektem nebo distribucemi.

Zdroj: opennet.ru

Přidat komentář