V předchozích částech jsme vytvořili různé aplikace a testovali jsme je lokálně. Nyní se podíváme na to, jak může být taková aplikace distribuována uživatelům.

Nejdříve si musíme říct něco o OSTree. To je základní distribuční a instalační mechanismus xdg-app. OSTree je podobné gitu, ale bylo navržené pracovat se stromy velkých binárek. Stejně jako git má koncept repozitářů, commitů a větví (refs). Větve jsou názvy, které ukazují na id commitu, a aplikace uložená v repozitáři je takovou větví.

Na vašem stroji je několik lokálních OSTree repozitářů, které mají nastavených několik „remotes“. Když instalujete nebo aktualizujete aplikaci z některého z těchto vzdálených zdrojů, co se děje, je, že provedete ostree pull větve ze vzdáleného zdroje, potom uděláte lokální checkout té větve (s pevnými odkazy zpátky na soubory repozitáře, takže je to levné).

Repozitáře OSTree vytvořené xdg-app build-export jsou typem, který je určený k tomu, aby byl poskytovaný hloupým webserverem. Takže, abyste mohli distribuovat svoji aplikaci, vše, co musíte udělat, je zkopírovat repozitář na webserver a dát uživatelům URL.

Nicméně měli byste vědět o několika detailech.

Ze všecho nejdříve formát repozitářů archive-z2 je jeden soubor pro každý soubor v aplikaci. To znamená, že operace pull udělá hodně dotazů http. Protože nové požadavky jsou pomalé, ujistěte se, že jste na webserveru povolili podporu pro HTTP keep-alive.

OSTree také podporuje něco, co je nazvané „static deltas“. Jedná se o soubory v repozitářích (vždy jeden pro repozitář), které obsahují všechna data pro přecházení mezi dvěma revizemi (nebo z ničeho na určitou revizi). Vytváření takových delt si vezme trochu více místa, ale stahování bude zase výrazně rychlejší.

xdg-app má příkaz build-update-repo, který je velmi užitečný pro spravování repozitářů. Od verze 0.4.13 podporuje --generate-static-deltas, které vygeneruje delty. Má ale i další funkce, které jsou užitečné. Např. můžete použít:

xdg-app build-update-repo --title="Pěkný název" repo

Chcete-li nastavit název repozitáře, který bude jednoduše čitelný pro uživatele a který bude výchozí volbou při zobrazení v uživatelském rozhraní.

Také vám umožňuje odstranit (--prune) nepoužívané objekty a delty z repozitáře nebo dokonce odstranit staré revize z repozitáře (--prune-depth), což se hodí třeba v případě repozitářů s automatickými nočními sestaveními.

Další věcí, kterou build-update-repo dělá, je extrakce appstreamu. Skenuje všechny větve v repozitáři a hledá xml soubor ve formátu AppStream. Např. aplikace slovníku z třetí části takový soubor obsahuje ve files/share/app-info/xmls/org.gnome.Dictionary.xml.gz. Všechny tyto soubory plus ikony, na které se odkazují, jsou posbírány a uloženy do celorepozitářové větve appstream. xdg-app udržuje lokální kopii této větve pro každý vzdálený zdroj. Tu můžete aktualizovat ručně pomocí:

xdg-app --user update --appstream nightly

To používají grafické instalační nástroje jako gnome-software, takže mít appstream data pro svoji aplikaci je důležité.

Poznámka: xdg-app-builder automaticky pouští appstream-compose po každém sestavení. To posbírá informace z appdata a desktop souborů a vytvoří správné soubory xml.gz a ikon. Odtud pochází také xml v gnome-dictionary.

Další důležitou částí distribuce aplikace jsou podpisy gpg. Ve výchozím stavu OSTree odmítá stáhnout cokoliv ze vzdáleného repozitáře, co není podepsané. Můžete to povolit přepínačem --no-gpg-verify, když přidáváte vzdálený zdroj (nebo to můžete změnit s příkazem xdg-app remote modify).

V OSTree jsou podpisy na každém commitu a souhrnném souboru, který obsahuje seznam všech větví v repozitáři. Tyto objekty jsou vytvořeny pomocí příkazů build-update-repo a build-export, případně nepřímo pomocí xdg-app-builder. Takže když je voláte, měli byste jim poskytnout gpg klíče k podepsání, nepovinně také domovský adresář gpg, který se má použít. Např.:

xdg-app build-export --gpg-sign=KEYID --gpg-homedir=/some/dir appdir repo

Tímto uzavíráme tento seriál a nyní byste měli vědět dost na to, abyste mohli balit a distribuovat své vlastní aplikace.

Autorem původního textu je Alex Larsson, který jej publikoval na svém blogu. Na mojefedora.cz jej vydáváme s jeho souhlasem přeložený do češtiny.