Proč používám na aplikace třetích stran Flatpak

Důvodů, proč provozovat aplikace ve Flatpaku, je víc. Někdo chce mít nejnovější verze aplikací co nejdříve. Pro mě jako uživatele Fedory, která si v tomto vede docela dobře, není toto tak velká motivace. Někdo chce aplikace provozovat bezpečněji. Já ale aplikacím v repozitářích Fedory docela věřím a ani sandbox ve Flatpaku není zatím tolik vynucovaný, aby nabízel neprůstřelné bezpečnostní řešení.

Kde má ale pro mě Flatpak opravdu velký přínos oproti klasickým balíčkům jsou aplikace třetích stran. Obvykle totiž používám vývojové verze Fedory. Na pracovním počítači přecházím na novější verzi chvíli po oddělení od Rawhidu a dlouho před betou a na soukromém notebooku mám dokonce Rawhide. V obou případech nemám zásadní problémy s nestabilitou a to i u aplikací. Nicméně tak úplně to neplatí pro aplikace třetích stran. Jejich vývojáři nějak úzce nesledují vývoj distribucí a i když často bundlují, co se dá, aby se vyhnuli problémům s kompatibilitou, dost často se jejich aplikace rozbíjejí.

Dřív jsem používal klient Spotify jako balíček z repozitáře Negativo17. Po upgradu na Fedoru 27 jsem zjistil, že nefunguje. Věřím tomu, že správce onoho balíčku problém brzo vyřešil, ale já neměl čas řešit, co se rozbilo, a zároveň jsem nechtěl být bez Spotify. Nainstaloval jsem tedy Spotify z Flathubu a od té doby jsem neměl problém.

Pokud používáte Rawhide nebo rané vývojové verze Fedory, máte často problémy s multimediální podporou, protože správci RPMFusion často nestíhají držet krok a jsou rozbité závislosti u pluginů GStreameru nebo VLC. Dnes používám VLC a GNOME MPV z Flathubu a problémy s multimediální podporou mi to definitivně vyřešilo.

Posledním příkladem, který mám, je Telegram. Donedávna jsem používal oficiální verzi, která není poskytovaná ani jako balíček. Musíte si stáhnout archiv, rozbalit ho do domovského adresáře, spustit binárku, která vytvoří .desktop soubor… na rok 2018 to není příliš elegantní. Když to ale uděláte, tak prostě funguje… dokud se to tedy nerozbije. Upgradoval jsem na Fedoru 28 a Telegramu najednou trvalo hrozně dlouho se spustit. Když jsem se podíval do logů, zjistil jsem, že to visí na nějaké chybě s font configem, čekalo to, až se to vytimoutuje, a potom se tom konečně spustilo. To klidně trvalo minutu, což je u spouštění aplikace poněkud hodně. Neměl jsem moc čas řešit, kde je problém. Nainstalovat jsem Telegram pro Flatpak a bylo po problému.

V čem tkví kouzlo Flatpaku? Izoluje aplikace od zbytku systému nejen ve smyslu toho, kam můžou sahat, ale také ve smyslu běhového prostředí. Aplikace závisí na běhovém prostředí, které si autor vybere a které nezávisí na systému. Díky tomu nejsou aplikace závislé na distribuci a nejsou tedy ani ovlivněny změnami v komponentách v systému. Dokážou tak běžet dlouhodobě spolehlivě i na Rawhidu, který je bleeding edge rolling release a tudíž představuje nekonečný přísun změn. V rámci repozitářů se tyto změny hlídají ještě dobře, rozmáhá se automatické testování a zodpovědnost správců balíčků je se změnami pracovat. U aplikací třetích stran už je to výrazně komplikovanější.

Když jsem začal používat Linux, razila se politika, že se k určitému datu zmrazí repozitáře a už se vydávají jenom opravy chyb, aby se distribuce odladila jako celek a nové verze nic nerozbíjely. Upstream a třetí strany se měly ideálně přizpůsobit jejich kadenci vydávání. Ale to se nikdy nepovedlo. Za prvé žádná distribuce se nestala natolik dominantní, aby zastínila ostatní a všichni se sjednotili na ní, a za druhé nikdo nepřinutí tisíce projektů, aby se sjednotily na podobné kadenci vydávání. Změnilo se i očekávání uživatelů, kteří chtějí nové verze aplikací co nejdříve, nečekat například na novou verzi oblíbeného hudebního přehrávače, až vyjde nová verze celé distribuce.

Flatpak, kde si tvůrce aplikace může zvolit, v jakém prostředí aplikace běží, bez ohledu na distribuci, na které běží, umožňuje tvůrcům odvázat se od konkrétních distribucí a jejich verzí, vydávat nové verze, kdy uznají za vhodné, a testovat proti jednomu běhovému prostředí. A musím říct, že minimálně u aplikací třetích stran to začíná přinášet ovoce.

 

7 komentářů: „Proč používám na aplikace třetích stran Flatpak“

  1. marektp avatar
    marektp

    Mě trochu chybí možnost mít pro CentOS/RHEL oficiální repository s backporty. Fedora je v pohodě díky relativně rychlému vydávacímu cyklu, ale instalovat třeba Python 3.6, nebo PHP 7.2 z externích zdrojů mě úplně netěší. Snad je logické, že Fedoru na server nedám. 🙂

    1. sesivany avatar

      Pro RHEL existují tzv. softwarové kolekce, které nabízejí aktuální verze vyšších jazyků jako Python, ale nevím, nakolik jsou dostupné nezákazníkům.
      Jinak já na svém serveru používám Fedora Server a musím říct, že je to bezproblémové. Kdyby to neběželo v OpenVZ kontejneru, který má problémy s posledními verzemi systemd, tak by to bylo naprosto bezúdržbové.

      1. marektp avatar
        marektp

        Ajo, dostupnost jsem nezkoumal. Bomba by byl i cli nastroj ala aptitude :-), dobre se v nem hleda. Mozna existuje, ale zatim jsem nic rozumneho nenasel.
        Jinak palec nahoru, Fedora i CentOS/RHEL jsou asi ta nej distra, nelituju prechodu od Ubuntu/Debian, to uz je cca 6 let.

  2. Martin avatar
    Martin

    Popravdě příliš nechápu jaký je pro uživatele na desktopu *praktický* rozdíl mezi použitím snap, flatpack a docker. Přijde mi, že udělají hodně podobnou službu… Jasně chápu technické rozdíly mezi nimi, ale když potřebuji „zabalit“ aplikaci a odstínit ji od okolního prostředí, pak mi nejuniverzálnější i nejsnazší přijde použít docker (např. takto: https://blog.jessfraz.com/post/docker-containers-on-the-desktop/). Existuje důvod proč použít flatpack místo dockeru?

    1. sesivany avatar

      Flatpak používá stejné technologie jako Docker, ale Docker je prostě specializovaný na serverové aplikace a nemá tooling a rozhraní pro desktopové aplikace. Přirovnal bych to k autům: Octavia i Tatra mají vznětový motor, volant, čtyři kola a i ta Tatra dokáže odvést rodinu na víkend k babičce, ale asi to nemá moc smysl, když na to na rozdíl od Octavie není uzpůsobená. Stejně tak desktopové aplikace lze pouštět v Dockeru, ale je to asi jako používat Tatru jako rodinné auto místo Octavie.

  3. Petr Hložek avatar
    Petr Hložek

    Mám aplikaci napsanou v Lazarusu (FreePascal), připojuje se k existující MySQL databázi nebo si spustí svoji instanci na vlastním portu s daty, která má uživatel v HOME. Chtěl jsem udělat flatpack balíček, ale nemám tušení jak na to, Lazarus žádný runtime nemá, pro kompilaci zase potřebuji ten Lazarus a FPC. Ptal jsem se i na IRC, ale odpověď jsem nedostal. Nevěděl byste jak začít nebo kde se zeptat? Díky!

    1. sesivany avatar

      Velmi pěkný návod, jak dělat flatpaky, vyšel jako blog na Abíčku: http://www.abclinuxu.cz/blog/dev_urandom/2018/3/jeden-den-s-flatpakem
      Jinak pro inspiraci můžete nahlédnout do manifestů aplikací ve Flathubu: https://github.com/flathub
      Obecně platí, že pokud není závislost v použitém runtimu, musí se sestavit společně s aplikací ze zdrojového kódu.
      Děláme i flatpak workshopy pro veřejnost, ale momentálně žádný naplánovaný nemáme.

Napsat komentář: sesivany Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *