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

Po roce a půl vývoje byla zveřejněna nová stabilní verze nástroje Flatpak 1.18, který poskytuje systém pro vytváření soběstačných balíčků, nesvázaných s konkrétními distribucemi Linuxu a spuštěných ve speciálním kontejneru, který izoluje aplikaci od ostatního systému. Podpora pro spouštění Flatpak balíčků je zajištěna pro Fedora, CentOS, Debian, Arch Linux, Gentoo, Linux Mint, Alt Linux a Ubuntu. Flatpak balíčky jsou zahrnuty v repozitáři Fedora a podporovány v nativních aplikacích pro správu aplikací GNOME a KDE.

Klíčové novinky ve verzi Flatpak 1.18:

  • Byla implementována podpora podmíněných oprávnění (conditional permission), která umožňuje při žádosti o oprávnění zkontrolovat přítomnost určitých funkcí v systému nebo runtime. Například při potřebě získání přístupu k zařízení pro vstup místo „—device=all“ lze požádat o oprávnění „—device-if=all:!has-input-device —device=input“, které poskytne přístup pouze k zařízením pro vstup nebo se vrátí k přístupu ke všem zařízením, pokud není selektivní poskytování přístupu podporováno v runtime. Podobně můžete požádat o přístup k USB zařízením („has-usb-device“ a „has-usb-portal“) nebo sdíleným subsystémům.
  • Byl povolen přístup k zařízení /dev/ntsync pro přístup k
    modulu jádra NTSYNC, který implementuje sadu primitiv pro synchronizaci používaných v jádře Windows NT a umožňuje významně zvýšit výkon her pro Windows spuštěných pomocí Wine.
  • Pro GPU Intel Xe byla zahrnuta podpora API VA-API pro hardwarovou akceleraci dekódování videa.
  • Byla implementována možnost přístupu k zařízení /dev/kfd (Kernel Fusion Driver) s využitím oprávnění poskytovaných pro DRI zařízení. Ovladač kfd implementuje rozhraní pro přímé provádění výpočtů na GPU AMD z aplikací využívajících AMD ROCm, HIP a OpenCL.
  • Byla přidána podpora použití voleb příkazového řádku pro přesměrování přístupu k adresářům do izolovaných aplikací.
  • Byla přidána podpora adresáře „preinstall.d“, který definuje seznam předinstalovaných Flatpak aplikací (pro zahrnutí Flatpak aplikací do operačního systému).
  • Byla povolena přímá instalace aplikací z kontejnerových obrazů ve formátu OCI, které mohou být načítány z vlastních OCI repozitářů a místních archivů.
  • Do příkazu „flatpak install —from“ byla přidána podpora URI „flatpak+https://“.
  • Do příkazu „flatpak run“ byla přidána možnost „—clear-env“ pro vymazání proměnných prostředí před spuštěním aplikace.
  • Byla poskytnuta možnost exportu kořenového adresáře hostitelského prostředí do izolovaného prostředí aplikace s přístupem přes adresář /run/host/root.
  • Byla přidána možnost výstupu výsledku provádění příkazů ve formátu JSON.
  • Byla posílena izolace stavebního prostředí – příkaz „flatpak build“ nyní ve výchozím nastavení neposkytuje přístup k hostiteli.
  • Byl přidán příkaz „reinstall“ pro přeinstalaci závislostí (bundle).
  • Nastavení D-Bus bylo ve výchozím nastavení přesunuto z adresáře /etc do /usr.
  • Byla zkrácena doba spuštění při použití příkazového interpretru fish.
  • Do libflatpak byla přidána funkce pro získání informací o čase vytvoření konfigurace, což umožňuje aplikacím, jako je GNOME Software, zjistit, že z jejich strany cachovaná data vyžadují aktualizaci.
  • Byla odstraněna možnost build http_backend, místo libsoup2 pro stahování pomocí HTTP/HTTPS byla použita knihovna libcurl.
  • Ve výchozím nastavení je povoleno používání escape sekvencí pro indikaci postupu provádění operace.
  • Bylo povoleno předávat přístupová práva k zařízením do vnořených sandboxových prostředí vytvořených prostřednictvím portálů Flatpak.
  • Pro aplikace dodávané ve formě OCI obrazů byl implementován mechanismus „extra-data“, například umožňující uspořádání přehrávání videa h.265 ve Flatpak balíčcích Fedora Linux.
  • Byla přidána podpora komprese závislostí (OCI bundle) pomocí algoritmu zstd, který efektivněji komprimuje data. Ve výchozím nastavení se stále používá gzip, který zajišťuje maximální kompatibilitu.

Flatpak zjednodušuje distribuci aplikací, které nejsou součástí běžných repozitářů distribucí, tím, že připravuje jeden univerzální kontejner, který uvolňuje vývojáře aplikací od nutnosti vytvářet samostatné verze pro každou distribuci. Uživatelům, kteří se starají o bezpečnost, Flatpak poskytuje možnost spustit podezřelou aplikaci v kontejneru, čímž dává selektivní přístup pouze k potřebným síťovým funkcím a uživatelským souborům. Uživatelům, které zajímají novinky, Flatpak umožňuje instalaci nejnovějších testovacích a stabilních verzí aplikací bez nutnosti provádět změny v systému. Například Flatpak balíčky jsou vytvářeny pro LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Telegram Desktop, Android Studio atd.

Aby se snížila velikost, obsahují balíčky pouze specifické závislosti pro aplikaci. Základní systémové a grafické knihovny (GTK, Qt, knihovny GNOME a KDE atd.) jsou dodávány jako připojitelné standardní runtime prostředí. Klíčový rozdíl mezi Flatpak a Snap je v tom, že Snap používá komponenty prostředí hlavního systému a izolaci na základě filtrování systémových volání, zatímco Flatpak vytváří oddělený kontejner od systému a pracuje s velkými sadami runtime, poskytujícími jako závislosti nikoli balíčky, ale standardní systémová prostředí (například všechny knihovny potřebné pro běh programů GNOME nebo KDE).

Kromě standardního systémového prostředí (runtime), které se instaluje prostřednictvím speciálního repozitáře, se dodávají další závislosti (bundle) potřebné pro fungování aplikace. Dohromady "runtime" a "bundle" tvoří náplň kontejneru, přičemž "runtime" se instaluje samostatně a je připojováno k několika kontejnerům, což umožňuje vyhnout se duplicaci společných systémových souborů pro kontejnery.

V jednom systému může být nainstalováno několik různých "runtime" (GNOME, KDE) nebo několik verzí jednoho "runtime" (GNOME 50, GNOME 49). Kontejner s aplikací jako závislost používá vazbu pouze na určité "runtime", bez ohledu na jednotlivé balíčky, které tvoří zvolené "runtime". Všechny chybějící prvky jsou zabaleny přímo spolu s aplikací. Při vytváření kontejneru se obsah "runtime" připojuje jako oddíl /usr, zatímco "bundle" se připojuje do adresáře /app.

Náplň "runtime" a kontejnerů aplikací je formována pomocí technologie OSTree, při které se obraz atomárně aktualizuje z Git-podobného úložiště, což umožňuje aplikovat metody verzionování na komponenty distribuce (například lze rychle vrátit systém do předchozího stavu). RPM balíčky jsou přenášeny do úložiště OSTree pomocí vrstvy rpm-ostree.

Výběrová instalace a aktualizace balíčků uvnitř pracovního prostředí nejsou podporovány - systém se aktualizuje nejen na úrovni jednotlivých komponentů, ale jako celek, atomárně měnící svůj stav. Jsou k dispozici prostředky pro inkrementální aplikaci aktualizací, které zbavují potřeby plné výměny obrazu při každé aktualizaci.

Vytvářené izolované prostředí nezávisí na používané distribuci a při řádném nastavení balíčku nemá přístup k souborům a procesům uživatele nebo hlavního systému, ani nemůže přímo komunikovat s hardwarem, kromě výstupu přes DRI. Výstup grafiky a organizace vstupu jsou realizovány pomocí protokolu Wayland nebo prostřednictvím průchodu socketu X11. Interakce s externím prostředím je postavena na systému výměny zpráv DBus a speciálním API Portals.

Pro izolaci se používá vrstva Bubblewrap a tradiční technologie kontejnerové virtualizace pro Linux, založené na využití cgroups, jmenných prostorů (namespaces), Seccomp a SELinux. Při vytváření balíčku může být izolace vypnuta, což využívají vývojáři některých balíčků k získání plného přístupu k FS a všem zařízením v systému.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster