nová stabilní větev nástroje , který poskytuje systém pro vytváření soběstačných balíčků nezávislých na konkrétních distribucích Linuxu a spouštěných ve speciálním kontejneru, který izoluje aplikaci od zbylé části systému. Podpora spuštění Flatpak balíčků je zajištěna pro Arch Linux, , Debian, Fedora, Gentoo, Mageia, Linux Mint a Ubuntu. Balíčky s Flatpak jsou zahrnuty v repozitáři Fedora a jsou podporovány v nativním správci aplikací GNOME.
Klíčové Ve větvi Flatpak 1.4:
- Změněna organizace nastavení parametrů externích repozitářů. V adresáři /etc/flatpak/remotes.d místo souborů *.conf s nastavením se nyní používají běžné soubory „.flatpakrepo“, které se automaticky importují při prvním použití flatpaku. Tyto soubory lze freely upravovat a mazat, podobně jako ručně přidané repozitáře;
- Významně byla změněna organizace instalací balíčků dostupných pro celý systém. V předchozích verzích se nejprve balíček instaloval do dočasného adresáře patřícího uživateli, a poté se spouštěl proces system-helper pro import do systému z tohoto adresáře. Takový přístup vedl k velké spotřebě diskových prostředků, nadbytečné I/O a potenciálním bezpečnostním problémům. V nové verzi se pro instalaci systémových balíčků využívá speciální nová souborová systém FUSE, do kterého může uživatel zapisovat data, ale po skončení zápisu je přístup k zapsaným souborům pro uživatele blokován. Nový přístup předpokládá založení pro flatpak samostatného uživatele (výchozí „flatpak“) a změnu pravidel SELinux;
- Přidána možnost definování na straně klientského systému filtrů pro externí repozitáře. Pomocí filtrů lze omezit viditelné aplikace v repozitáři, s využitím modelu whitelistu a blacklistu;
- Přidán knihovní API pro přidání externích repozitářů ze souborů flatpakref;
- Přidán seccomp profil pro Docker, umožňující spouštění flatpaku v kontejnerech;
- Zlepšena možnost instalace z více zdrojů P2P (přes USB zařízení nebo po lokální síti);
- V příkazu „flatpak remote-ls“ zajištěna automatická filtrace aplikací, pro které skončila doba podpory;
- V „flatpak remote-ls“ a „flatpak remote-info“ implementována volba „—cached“ pro poskytování informací na základě lokálně uložených dat;
- Přidána možnost nastavení verze konce životnosti balíčku, po jejímž uplynutí se bude navrhovat přechod na novou větev;
- Přidána volba „—socket=pcsc“ pro získání přístupu k chytrým kartám;
- Přidána podpora systémů, ve kterých jsou přítomny více grafické karty NVIDIA;
- Implementována podpora umístěného v sandboxovém prostředí dconf;
- Do týmu build-update-repo byly přidány možnosti „—no-update-[summary,appstream]“ a „—static-delta-ignore-ref=PATTERN“;
- Výrazně byla zvýšena rychlost regenerace větví appstream pro velké repozitáře.
Připomínáme, že vývojářům aplikací Flatpak usnadňuje distribuci svých programů, které nejsou zahrnuty v oficiálních repozitářích distribucí, díky jednoho univerzálního kontejneru bez vytváření samostatných sestavení pro každou distribuci. Pro uživatele, kteří dbají na bezpečnost, Flatpak umožňuje spustit podezřelou aplikaci v kontejneru, poskytující přístup pouze k síťovým funkcím a souborům uživatele souvisejícím s aplikací. Pro uživatele, kteří se zajímají o novinky, Flatpak umožňuje nainstalovat nejnovější testovací a stabilní verze aplikací, aniž by bylo nutné provádět změny v systému. Například v současné době jsou již k dispozici balíčky Flatpak. pro LibreOffice, Firefox, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio atd.
Aby se snížila velikost balíčku, zahrnuje pouze specifické závislosti aplikace, zatímco základní systémové a grafické knihovny (Gtk+, Qt, knihovny GNOME a KDE atd.) jsou zpracovány jako připojitelné standardní runtime prostředí. Klíčový rozdíl mezi Flatpak a Snap spočívá v tom, že Snap používá komponenty prostředí základního systému a izolaci na základě filtrování systémových volání, zatímco Flatpak vytváří samostatný kontejner od systému a operuje s rozsáhlými runtime sadami, poskytujícími jako závislosti nikoli balíčky, ale standardní systémová prostředí (například všechny knihovny potřebné pro spuštění programů GNOME nebo KDE).
Kromě typického systémového prostředí (runtime), které se instaluje prostřednictvím speciálního , jsou dodávány další závislosti (bundle) potřebné pro fungování aplikace. V součtu runtime a bundle tvoří obsah kontejneru, přičemž runtime se instaluje samostatně a může být připojen k několika kontejnerům, což umožňuje vyhnout se duplicování sdílených systémových souborů. 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 3.26, GNOME 3.28). Kontejner s aplikací jako závislost používá připojení pouze k určitému runtime, bez ohledu na jednotlivé balíčky, z nichž se runtime skládá. Všechny chybějící prvky jsou zabaleny 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.
Obsah runtime a kontejnerů aplikací je tvořen pomocí technologie , při níž se obraz atomárně aktualizuje z Git-podobného úložiště, což umožňuje aplikovat metody verzování na komponenty distribuce (například lze rychle vrátit systém do předchozího stavu). RPM balíčky jsou transformovány do repozitáře OSTree pomocí speciální vrstvy . Oddělená instalace a aktualizace balíčků uvnitř pracovního prostředí není podporována, systém se aktualizuje nikoliv na úrovni jednotlivých komponentů, ale celkově, atomárně mění své stavy. Jsou poskytovány nástroje pro inkrementální aplikaci aktualizací, které zbavují potřeby kompletního nahrazení obrazu při každé aktualizaci.
Vytvářené 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 nebo základního systému, nemůže se přímo obracet na hardware, s výjimkou výstupu přes DRI, a síťového subsystému. Výstup grafiky a organizace vstupu pomocí protokolu Wayland nebo prostřednictvím přesměrování socketu X11. Interakce s vnějším prostředím je postavena na systému pro výměnu zpráv DBus a speciálním API Portals. Pro izolaci vrstva a tradiční technologie kontejnerové virtualizace pro Linux založené na využití cgroups, prostorů názvů (namespaces), Seccomp a SELinux. Pro přehrávání zvuku se používá PulseAudio.
Zdroj: opennet.ru
