Po roku a pol vývoja bola vydaná nová stabilná vetva Flatpaku 1.18. Poskytuje systém na vytváranie samostatných balíčkov, ktoré nie sú viazané na konkrétne distribúcie. Linux a spustené v špeciálnom kontajneri, ktorý izoluje aplikáciu od zvyšku systému. Pre Fedoru je zabezpečená podpora pre spúšťanie balíkov Flatpak, CentOS, Debian, Oblúk Linux, Gentoo, Linux Mäta, Alt Linux и UbuntuBalíky Flatpak sú súčasťou repozitára Fedora a sú podporované v štandardných programoch na správu aplikácií GNOME a KDE.
Kľúčové inovácie v pobočke Flatpak 1.18:
- Bola implementovaná podpora podmienených povolení. To vám umožňuje skontrolovať dostupnosť určitých funkcií v systéme alebo za behu pri vyžadovaní povolení. Napríklad, ak potrebujete prístup k vstupnému zariadeniu, namiesto „--device=all“ môžete požiadať o povolenie „--device-if=all:!has-input-device --device=input“. Toto udelí prístup iba vstupným zariadeniam alebo sa vráti k prístupu ku všetkým zariadeniam, ak selektívny prístup nie je za behu podporovaný. Podobne môžete požiadať o prístup k zariadeniam USB („has-usb-device“ a „has-usb-portal“) alebo zdieľaným podsystémom.
- Prístup k zariadeniu /dev/ntsync bol povolený
modul jadra NTSYNC, ktorý implementuje sadu synchronizačných primitív používaných v jadre Windows NT a umožňuje výrazne zvýšiť produktivitu Windows-hry spustené pomocou Wine. - Pre grafické procesory Intel Xe bola povolená podpora rozhrania VA-API pre hardvérovo akcelerované dekódovanie videa.
- Bol implementovaný prístup k zariadeniu /dev/kfd (ovládač Kernel Fusion) pomocou povolení udelených pre zariadenia DRI. Ovládač kfd implementuje rozhranie pre priame vykonávanie výpočtov na grafických procesoroch AMD z aplikácií používajúcich AMD ROCm, HIP a OpenCL.
- Pridaná podpora pre používanie parametrov príkazového riadka na odovzdanie prístupu k adresáru aplikáciám v sandboxe.
- Pridaná podpora pre adresár „preinstall.d“, ktorý definuje zoznam predinštalovaných aplikácií Flatpak (na zahrnutie aplikácií Flatpak do operačného systému).
- Priama inštalácia aplikácií z obrazov kontajnerov OCI je teraz povolená, ktoré je možné stiahnuť z natívnych repozitárov OCI a lokálnych archívov.
- Pridaná podpora pre URI „flatpak+https://“ do príkazu „flatpak install --from“.
- Do príkazu „flatpak run“ bola pridaná možnosť „--clear-env“, ktorá vymaže premenné prostredia pred spustením aplikácie.
- Bola poskytnutá možnosť exportovať koreňový adresár hostiteľského prostredia do izolovaného aplikačného prostredia s prístupom cez adresár /run/host/root.
- Pridaná možnosť výstupu výsledkov vykonania príkazu vo formáte JSON.
- Izolácia prostredia zostavovania bola posilnená – príkaz „flatpak build“ už štandardne neposkytuje prístup k hostiteľovi.
- Pridaný príkaz „reinstall“ na preinštalovanie závislostí (bundle).
- Predvolené nastavenia D-Bus boli presunuté z adresára /etc do /usr.
- Skrátený čas spustenia pri použití interpreta príkazov fish.
- Do knižnice libflatpak bola pridaná funkcia na načítanie informácií o čase vytvorenia konfigurácie, čo umožňuje aplikáciám, ako napríklad softvéru GNOME, určiť, kedy je potrebné aktualizovať ich údaje uložené vo vyrovnávacej pamäti.
- Možnosť zostavenia http_backend bola odstránená; na načítanie cez HTTP/HTTPS sa teraz namiesto knižnice libsoup2 používa knižnica libcurl.
- Predvolene je povolené používanie escape sekvencií na označenie priebehu operácie.
- Povolené je preniesť povolenia zariadenia do vnorených prostredí sandbox vytvorených prostredníctvom portálov Flatpak.
- Pre aplikácie dodávané ako obrazy OCI bol implementovaný mechanizmus „extra dát“, ktorý napríklad umožňuje prehrávanie videa h.265 v balíkoch Fedora Flatpak. Linux.
- Pridaná podpora pre kompresiu OCI zväzkov pomocou algoritmu zstd, ktorý poskytuje efektívnejšiu kompresiu dát. Gzip zostáva predvolenou metódou kompresie pre maximálnu kompatibilitu.
Flatpak zjednodušuje distribúciu programov, ktoré nie sú zahrnuté v štandardných distribučných repozitároch, vytvorením jedného univerzálneho kontajnera, čím eliminuje potrebu vývojárov vytvárať samostatné zostavy pre každú distribúciu. Pre používateľov, ktorí dbajú na bezpečnosť, Flatpak umožňuje spúšťať pochybné aplikácie v kontajneri a udeľuje selektívny prístup iba k potrebným sieťovým funkciám a používateľským súborom. Pre používateľov, ktorí majú záujem o nové vydania, Flatpak umožňuje nainštalovať najnovšie testovacie a stabilné vydania aplikácií bez vykonania akýchkoľvek zmien v systéme. Balíky Flatpak sú napríklad vytvorené pre LibreOffice, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Telegram Desktop, Android Štúdio atď.
Na zmenšenie veľkosti sú v balíku zahrnuté iba závislosti špecifické pre aplikáciu. Základné systémové a grafické knižnice (GTK, Qt, GNOME a KDE knižnice atď.) sú dodávané vo forme zásuvných štandardných runtime prostredí. Kľúčový rozdiel medzi Flatpak a Snap je v tom, že Snap používa komponenty hlavného systémového prostredia a izoláciu založenú na filtrovaní systémových volaní, zatiaľ čo Flatpak vytvára kontajner oddelený od systému a pracuje s veľkými runtime sadami, pričom neposkytuje balíčky ako závislosti, ale štandard. systémové prostredie (napríklad všetky knižnice potrebné na fungovanie programov GNOME alebo KDE).
Okrem štandardného systémového prostredia (runtime), inštalovaného prostredníctvom špeciálneho úložiska, sú dodávané ďalšie závislosti (bundle) potrebné pre chod aplikácie. Celkovo „runtime“ a „bundle“ tvoria obsah kontajnera, zatiaľ čo „runtime“ je inštalovaný oddelene a viazaný na niekoľko kontajnerov naraz, čo vám umožňuje vyhnúť sa duplikácii systémových súborov spoločných pre kontajnery.
Jeden systém môže mať nainštalovaných niekoľko rôznych „runtime“ (GNOME, KDE) alebo niekoľko verzií toho istého „runtime“ (GNOME 50, GNOME 49). Kontajner s aplikáciou ako závislosťou používa väzbu len na konkrétny runtime, bez toho, aby bral do úvahy jednotlivé balíky, ktoré tvoria vybraný runtime. Všetky chýbajúce prvky sú pribalené priamo k aplikácii. Pri vytváraní kontajnera je obsah "runtime" pripojený ako oddiel /usr a "bundle" je pripojený do adresára /app.
Runtime a aplikačné kontajnery sú vytvorené pomocou technológie OSTree, v ktorej sa obraz atomicky aktualizuje z úložiska podobného Gitu, čo umožňuje aplikovať metódy riadenia verzií na komponenty distribúcie (napríklad môžete rýchlo vrátiť systém späť na predchádzajúci štát). Balíky RPM sa prekladajú do úložiska OSTree pomocou vrstvy rpm-ostree.
Selektívna inštalácia a aktualizácia balíkov v rámci pracovného prostredia nie je podporovaná - systém sa neaktualizuje na úrovni jednotlivých komponentov, ale ako celku, pričom sa atomicky mení jeho stav. Poskytuje nástroje na postupnú aplikáciu aktualizácií, čím sa eliminuje potreba úplne nahradiť obraz pri každej aktualizácii.
Výsledné izolované prostredie je nezávislé od použitej distribúcie a pri správnej konfigurácii balíka nemá prístup k súborom ani procesom používateľa alebo hostiteľského systému, ani nemôže priamo pristupovať k hardvéru okrem výstupu cez DRI. Grafický výstup a vstup sú implementované pomocou protokolu Wayland alebo presmerovania soketov X11. Interakcia s externým prostredím je vybudovaná prostredníctvom systému správ DBus a špecializovaného rozhrania Portals API.
Na izoláciu sa používa vrstva bublinovej fólie a tradičné Linux technológie virtualizácie kontajnerov založené na použití cgroups, menných priestorov, Seccomp a SELinuxPri vytváraní balíka je možné vypnúť izoláciu, ktorú niektorí vývojári balíkov používajú na získanie úplného prístupu k súborovému systému a všetkým zariadeniam v systéme.
Zdroj: opennet.ru
