FLATPAK
Revoluce v distribuci linuxových aplikací? Jiří Eischmann, Red Hat Desktop Engineering Manager
Problémy s distribucí softwaru pro Linux ●
●
●
Aplikace nejsou odděleny od samotného systému. Současné procesy pro přidávání softwaru do distribucí nejsou škálovatelné. Software třetích stran se do systému instaluje v nezabezpečené formě.
Cíle ●
●
Třetí strany mohou vytvářet a distribuovat své aplikace pro více distribucí. Aplikace by měly mít pokud možno co nejmenší přístup do zbytku systému.
Historie ●
Autorem Alex Larsson.
●
První experimenty pod názvem glick v roce 2007.
●
Myšlenka současného řešení se začala rozvíjet na GUADEC 2012 pod pracovním názvem „LinuxApps“.
●
Vývoj pod názvem Xdg-app započal v prosinci 2014.
●
Oficiálně oznámeno pod finálním názvem v červenci 2016.
Použité technologie ●
Kernel – cgroups, namespaces, bind mounts, seccomp.
●
Bubblewrap.
●
OSTree.
●
DBus.
●
AppStream.
●
OCI format.
Jak to funguje
Základní pojmy ●
●
●
●
Runtime – definované prostředí pro běh aplikace, připojuje se v kontejneru do /usr. SDK – runtime + komponenty a nástroje pro sestavování aplikací. Aplikační bundle – soubory aplikace, závislosti, které chybí v runtimu, metadata, exportované soubory (soubor .desktop, ikony, appdata.xml, dbus služba,…). Portály – kontrolovaný přístup aplikací k prostředkům mimo sandbox (soubory, tisk, otevírání URI, snímky obrazovky, upozornění, stav sítě, proxy, zařízení)
Vytváření aplikací ●
●
flatpak build – provádění jednotlivých úkonů. flatpak-builder – automatizace sestavování komplexnějších aplikací.
●
GNOME Builder – integrace do IDE.
●
Anatomie aplikace: –
Metadata (info o aplikaci a o tom, co je potřeba k jejímu běhu)
–
/files (soubory, které tvoří aplikaci)
–
/files/bin (binární soubory aplikace)
–
/export (soubory, které se exportují mimo sandbox)
Vytváření aplikací - manifest
Dostupné runtimy ●
Freedesktop.org a GNOME (postavené na Yocto).
●
KDE (zatím experimentální).
●
A další experimentální (CentOS, openSUSE, HawaiiOS).
●
Lokalizační soubory lze umístit do samostatné části runtimu (org.gnome.Platform → org.gnome.Platform.Locale).
Instalace aplikací
●
Ostatní možnosti: –
Soubor .flatpakrepo – přidá repozitář.
–
Soubor .flatpakref – přidá repozitář a nainstaluje aplikaci.
–
Soubor .flatpak – obsahuje celou aplikaci a instrukce k její instalaci.
Integrace do grafických nástrojů ●
●
●
Pomocí libflatpak. GNOME Software – podporuje instalační soubory .flatpak, verze 3.24 bude podporovat také .flatpakref. KDE Muon – podpora Flatpaku je plánována.
Dostupné aplikace ●
GNOME (32 aplikací)
●
KDE (19 aplikací)
●
LibreOffice
●
●
●
Multimediální: GNOME mvp, mvp, Spotify, Lollypop, Tomahawk, Pitivi, Pithos. Grafické: GIMP, Darktable, Blender, MyPaint, Scribus. Internet: Firefox (experimentálně), Thunderbird, Skype, HexChat, Telegram, SparkleShare.
●
Vývojářské: MonoDevelop.
●
Hry: Minecraft.
Dostupnost v distribucích ●
Fedora 23 a novější.
●
Debian Testing a novější (pro Jessie v backports).
●
Ubuntu 16.10 (PPA pro 16.04).
●
Arch.
●
Gentoo (neoficiální overlay).
●
Mageia Cauldron.
Budoucnost ●
●
●
Infrastruktura pro sestavování a hostování aplikací pro Flatpak (pracovní označení FlatHub). Centrální katalog aplikací (pracovní označení FlatStore). Automatické generování Flatpaků z balíčků pro vytváření „atomických“ distribucí (např. Fedora Atomic Workstation).
Omezení Flatpaku ●
●
●
Vyšší náročnost na paměť a prostor na disku. Duplikuje opravy bezpečnostních problémů (částečně řešeno runtimy). Sdílení nastavení se zbytkem systému (vzhled, písmo, vykreslování písma,…).
Srovnání s alternativami ●
●
Snap –
Nejen pro desktopové aplikace, ale obecně pro jakékoliv.
–
Nevyužívá runtimy, ale vše bundluje k aplikaci.
–
Původně umožňovaly nástroje distribuci jen přes repozitář Canonicalu.
–
K izolaci používá AppArmor.
–
Momentálně horší integrace do prostředí.
AppImage –
Aplikace instaluje připojením virtuálního disku se všemi závislostmi.
–
Funguje prakticky všude, ale má také nejvyšší paměťové nároky.
–
Sanboxing jen dodatečně pomocí FireJail.
–
Jen velmi základní tooling.
Otázky? flatpak.org