Datovka na Flathubu

Jak už jsem tady psal, před časem jsem přešel na Silverblue, kde zkouším myšlenku neměnného systému, takže všechny desktopové aplikace provozuji ve Flatpaku. Z aplikací, které používám, mi na Flathubu chyběl Evolution a Datovka. Evolution jsem tam dostal asi před měsícem Datovku nyní.

Základ manifestu pro flatpak Datovky jsem napsal na LinuxDays během našeho workshopu na vytváření flatpaků. Má relativně málo závislostí. Kromě samotné Datovky musím sestavovat jen libxml2 a libisds. O zbytek (OpenSSL, Qt a jeho moduly) se postará KDE runtime.

Poprvé jsem taky vyzkoušel napsat manifest v YAMLu místo v JSONu. Píše se to jednodušeji, přijde mi to přehlednější. Jen tedy debuggování chyb v syntaxi je oproti JSONu opravdu opruz. Zatímco u JSONu mi Flatpak vrátí přesný řádek a znak chyby, u YAMLu jen neurčitá chybová hlášení a některé chyby v syntaxi přešel úplně. Takže z mé zkušenosti je YAML pro psaní manifestů dobrý do té doby, než v něm musíte hledat nějaké chyby 🙂

Napsat manifest, aby se aplikace sestavila a spustila, byla otázka asi půl hodiny. Ta skutečná zábava přichází v momentě, kdy chcete, aby aplikace ve Flatpaku běžela dobře, aby vše fungovalo, aby neměla otevřený přístup do hosta.

Prvním problémem bylo, že Datovka nebyla schopná ukládat nastavení a přihlašovací údaje. Ukázalo se, že místo, aby nechala umístění složky pro nastavení na Qt, které by ji umístilo do standardní cesty a v případě Flatpaku do sandboxu, natvrdo se snažila jej ukládat do /home. To by fungovalo, kdybych dal Datovce přístup do domovského adresáře uživatele, ale tím bych výrazně narušil sandbox, což jsem nechtěl. Nakonec to vyřešil jednoduchý patch, díky kterému Datovka ukládá nastavení do standardní cesty.

Dalším problémem bylo, že pokud jsem chtěl otevřít nějakou přílohu přímo (např. PDF v Evince), Datovka se soubor snažila uložit do /tmp. Opět někam, kde nemá přístup. Šlo by to vyřešit poskytnutím přístupu do celého hosta, ale znamenalo by to ještě větší narušení sandboxu než v předchozím případě. V tomto případě stačilo vytvořit spouštěcí skript, který nastavoval proměnnou prostředí TMPDIR=$XDG_CACHE_HOME, aby se soubor uložil do sandboxu. A pak byl předaný (jen) aplikaci, kterou uživatel vybere pro otevření.

A to bylo víceméně vše. Kromě přístupu k dconfu na hostovi (kvůli načtení tématu, nastavení písma atd.) nemá Datovka na úrovni souborového systému přístup k datům uživatele. Pokud do ní chcete nějaký soubor načíst (ať už je to příloha nebo třeba certifikát pro přihlášení), použije přes Qt portál a dostane přístup jenom k souboru, který uživatel vybere.

Datovka je docela typickým příkladem aplikace pro Linux. Byla psaná s tím, že má neomezený přístup do hosta, takže v sandboxu automaticky všechno nefunguje. Cesta nejmenšího odporu je jí prostě přístup do hosta povolit, ale často stačí jen pár drobných úprav na straně aplikace a funguje i v sandboxu bez problémů.

Pokud používáte prostředí založené na GTK+ a doinstalujete si QGnomePlatform rozšíření KDE runtimu, které překládá změny v nastavení GTK+ do Qt, bude se vám Datovka do prostředí integrovat i vzhledově.

Datovka po přepnutí prostředí na tmavé téma.

Na Flathubu jsem musel projít standardním review, které je dost podobné tomu, kterým musíte projít, když chcete dostat balíček do distribuce. Např. Snap Store něco takového nedělá (sandboxované snapy jsou přijaté automaticky, nesandboxované projdou jenom rychlou bezpečnostní prohlídkou), což si myslím je škoda, protože se na to podívají odborníci, kterým prošly rukama už stovky manifestů, a zatím mi vždycky pomohli manifest výrazně vyladit (odstranit zbytečně bundlované závislosti, upravit tak, aby se to sestatovalo i na ostatních architekturách, odstranit práva, která aplikace nutně nepotřebuje atd.).

Na Flathubu je taky preferované, aby se o flatpaky starali přímo upstreamoví vývojáři, takže jsem je přes jeden svůj kontakt v CZ.NICu oslovil, jestli by Datovku ve Flathubu nechtěli převzít. Zájem nebyl. Navíc mě požádali, abych do popisu přidal, že flatpak není spravovaný jimi. S tím nemám problém. Myslím si, že když se o flatpak stará někdo jiný než upstreamový vývojář, mělo by to být uživateli deklarované.

CZ.NIC dělá v OBS oficiální balíčky pro 3 distribuce (Fedora, Debian, Ubuntu) a testují to ještě na Linux Mintu a Gentoo. Flatpak samozřejmě pokrývá výrazně víc a také na rozdíl od balíčků CZ.NICu podporuje taky architekturu ARM, proto si myslím, že má smysl ho pro Datovku udržovat. Datovka už neprochází nějakým překotným vývojem a Flatpak poskytuje na všech distribucích stejné prostředí, stačí tedy testovat jenom jednou, takže si nemyslím, že údržba flatpaku Datovky bude náročná, a není to nic, o co bych se nemohl starat sám.

Zkusím ještě, jestli upstream nebude mít zájem o patche, které jsme udělali, aby Datovka ve Flatpaku dobře běžela. Myslím, že mají smysl obecně. Navíc bych jim chtěl navrhnout, aby přešli u ID aplikace na schéma reverse-DNS, v tomto případě org.cznic.Datovka, které jsem musel použít, protože Flatpakem je vyžadováno, ale hodí se obecně pro unikátní identifikaci aplikace třeba pro uživatelská hodnocení napříč distribucemi.

Závěrem bych chtěl poděkovat Honzovi Grulichovi, který mi hodně pomohl hlavně s věcmi kolem Qt.

A ještě tedy profil Datovky na Flathubu 😉

9 komentářů: „Datovka na Flathubu“

  1. GoodMirek avatar

    Skvělé, díky moc!
    Nainstaloval jsem si Datovku prostřednictvím Flatpaku do běžné FC29, protože při instalaci z RPM balíčku z repozitáře FC29 aplikace hodně padala.

    Používám Datovku především k archivaci datových zpráv. V takovém případě potřebuji, aby aplikace mohla zapisovat někam, odkud si mohu soubory zkopírovat dál na archivní médium.
    Vyřešil jsem to tak, že jsem dal Datovce přístup do celého mého domovského adresáře. Udělal jsem to takto, třeba to někomu pomůže:
    sudo flatpak override org.cznic.Datovka –filesystem=home

  2. kepicz avatar
    kepicz

    Díky moc za to, měl jsem taktéž problém s pády a flatpak to nejdříve vyřešil.

    Co mě ale zaráží je fakt, že neexistuje žádná možnost jak reportovat problémy. Na flathubu prostě nevidím žádné info kam založit ticket nebo komu se ozvat o pomoc. Zaráží mě to obecně vůči celému flathubu, má to takto vůbec nějakou budoucnost?

    Ke konkrétnímu problému – kam se mám obrátit, když nejsem vůbec schopný použít verzi 4.13.1? Spustit na poněkolikáté sice dokážu, ale kdykoliv se pokusím stáhnout zprávu, aplikace spadne, chybu v terminálu nevidím.

    1. GoodMirek avatar
      GoodMirek

      Datovka 4.13.1 je u me pouzitelna jen jako RPM. Z Flathubu mam stejne problemy – spusteni trva pres pul minuty (postihuje v nedavne dobe i Telegram), pri pokusu o stazeni zpravy pada.

      1. Jan Grulich avatar

        Ta prodloužená doba spouštění je moje chyba (viz. https://github.com/flatpak/flatpak/issues/2843). Už je to opravené v upstreamu, možná bych tu opravu mohl do Fedory dát dřív než vyjde nová verze Plasmy.

      2. GoodMirek avatar
        GoodMirek

        @grulja Kdyby to bylo na me, dal bych tu opravu do FC30. Ta je hodne nova a tlaci SilverBlue – kdyz tam nefunguje flatpakova aplikace, je uzivatel dost namydleny. Zaroven to v FC30 nenastve lidi, kteri kvuli stabilite zustavaji na FC28/FC29, kdyby to nahodou melo nejake nezadouci vedlejsi efekty.

    2. eischmann avatar

      Problémy s flatpakem lze hlásit tady: https://github.com/flathub/org.cznic.Datovka/issues

      Nicméně to je IMHO problém Datovky, ta začala padat s novější verzí Qt a OpenSSL. Myslel jsem si, že to vyřeší ta aktualizace na 4.13.1, ale nevyřešila. Pád při pokusu stáhnout zprávu pozoruji také. Pomalý start už ne, to byl myslím nějaký problém s portálem Flatpaku, který už je ve Fedoře opravený.
      Teoreticky by to mohl vyřešit návrat ke KDE 5.11 runtimu, ale ten už AFAIK není podporovaný, takže by to bylo zase na úkor bezpečnosti.

      1. GoodMirek avatar
        GoodMirek

        Muj pohled – Pokud maji lidi zacit pouzivat SilverBlue, tak potrebuji z Flathubu software alespon ve srovnatelne kvalite s Fedora RPM repozitari. Podle me posledni stable Datovka na Flathubu je 4.11.1. Bezny uzivatel vsak rollback na ni nezvladne, pokud nedostane presny navod, jak nainstalovat predchazejici commit a jeste si musi rucne stahnout KDE 5.11 runtime. Existuje na Flathubu moznost mit neco jako updates-testing a updates?
        Ohledne bezpecnosti, vetsina uzivatelu zavrhne technicky bezpecnejsi system, pokud je mene uzivatelsky privetivy. Aby bylo neco bezpecne, musi to byt i uzivatelsky privetive, jinak tu bezpecnost nikdo nebude pouzivat. Pokud neni znama zadna aplikovatelna zranitelnost KDE 5.11, dal bych prednost zachovani funkcni aplikace na Flathubu, abych neodradil uzivatele.

    3. eischmann avatar

      Dívám se, že to není jenom problém Datovky ve Flatpaku, ale stejně se chová i oficiální balíček na Ubuntu: https://gitlab.labs.nic.cz/datovka/datovka/issues/426

      1. GoodMirek avatar
        GoodMirek

        Ten problem byl kvuli OpenSSL bugu a postihl vic distribuci, viz upstream bug datovky https://gitlab.labs.nic.cz/datovka/datovka/issues/410

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

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