Zero install: univerzální balíčkovací systém

20. 6. 2011
Doba čtení: 5 minut

Sdílet

Taky vás dokáže naštvat, když si chcete z webu stáhnout balíček nové aplikace a zjistíte, že pro vaši distribuci jej nedělají? Jak by v takové chvíli pomohl univerzální balíčkovací systém, který by fungoval napříč distribucemi. Několik jich existuje a my si dnes jeden velmi šikovný představíme.

Sen o univerzálních balíčcích

Balíčkovací systém je jedna z nejlepších věcí na linuxových operačních systémech. Neuvěřitelně zjednodušují člověku život, nabízejí spoustu automatiky, udržují váš systém aktualizovaný a dávají vám přístup k desítkám tisíc aplikací. Stačí jen říct, co chcete a všechno za vás bude zařízeno a do budoucna udržováno.

Bohužel to má (nejméně) jednu podstatnou nevýhodu. Dělá to těžkou hlavu všem, kteří se snaží pro Linux vyvíjet aplikace. Aby se jejich aplikace dostala k uživatelům, je třeba připravovat několik různých typů balíčků, navíc často rozdílných pro různé odnože distribucí (nestačí jen deb a rpm a je hotovo) a situace se komplikuje. Namísto soustředění na vývoj je třeba se učit vyrábět balíčky tím správným způsobem a sledovat vývoj řady distribucí.

Snem každého takového vývojáře je pak jeden univerzální balíčkovací systém, který by dokázal zaštítit instalaci a aktualizaci software napříč různými operačními systémy. Neměl by se omezovat ani jen na Linux, ale prostě být co nejuniverzálnější. Z hlediska uživatele by to byla také výhra. Nemuseli bychom řešit, jestli je tenhle pěkný nový program jen pro protežované Ubuntu, nebo i pro naši oblíbenou Fedoru.

Existuje několik různých pokusů o podobný balíčkovací systém, ale zatím nejnadějněji vypadá Zero Install, který navíc nedávno vyšel v první ostré verzi. Má řadu pokročilých vlastností, velmi dobře se používá a proti tradičním balíkovačům integrovaným v systémech má i několik zajímavých vlastností.

Nulová instalace

To podstatné hned na začátek: Zero Install se nesnaží nahradit váš standardní balíčkovací systém, ale staví se zcela mimo něj. Pokud si jej tedy pořídíte, budete mít dva různé typy balíčků. Nemusí vás to ale vůbec trápit, nedojde k žádné kolizi, nebudete muset vůbec nic řešit a jednoduše budete mít možnost instalovat další software z nových zdrojů.

Zero Install je na rozdíl od ostatních konkurentů decentralizovaný. Nevytváří vlastní repositáře s tisíci balíčky, ale jednoduše nechává vše na vývojářích software. Na vývojáři je jen připravit jednoduchý komprimovaný soubor (kompresní program je v podstatě libovolný) s binárními soubory ve správných adresářích a jednoduchého XML, které popisuje, o co jde a kde je možné to najít.

Tento XML soubor je pak vystaven na webu projektu s textem „Nainstalujte pomocí 0install“ nebo podobným. Soubor obsahuje základní informace o aplikaci jako je název, popis, verze a podobně, ale především informaci o samotných komprimovaných archivech s programem. Těch může být více pro různé architektury. Zero Install se totiž nezaměřuje jen na Linux, ale můžete jím instalovat aplikace i pro další unixové systémy, MS Windows či Mac OS X. K jedné aplikaci tak existuje jediný XML soubor a instalátor si podle něj vybere, co bude třeba stahovat (třeba i 32 či 64bitovou verzi).

Jakmile rozkážete k instalaci, balíčkovač si stáhne XML, vybere si, co potřebuje, stáhne to a rozbalí. Přitom řeší i závislosti, které jsou opět vepsány do XML i s cestami k nim. Může se tak stáhnout několik archivů. Ty se následně rozbalí na disk a je konec. Tedy je nainstalováno. Z archivu se nic při instalaci nespouští, prostě se jen rozbalí do jednoho jediného adresáře. Odinstalaci tak můžete klidně provést jeho jednoduchým smazáním.

Aby byla instalace bezpečná, jsou balíčky digitálně podepsány a vy budete mít možnost ověřit, zda instalujete skutečně to, co jste zamýšleli.

Teď přijde zásadní informace: rozbalení archivu proběhne v uživatelském adresáři ~/.cache/0install.net. Nic se nezapisuje do systému, nic nekoliduje s už nainstalovanými balíčky. Navíc to funguje i v systémech, ke kterým nemáte administrátorská oprávnění.

Nevýhodou naopak je, že se vám některé balíčky (hlavně knihovny) na disku duplikují. Například GTK budete mít pravděpodobně i v operačním systému, ale první GTK aplikace instalovaná přes Zero Install si jej stáhne taky. To je daň za bezproblémový provoz a univerzálnost.

Pokud budete mít přesto zájem alespoň sdílet cache mezi uživateli, můžete tuto funkci zapnout a začne se využívat adresář /var/cache/0install.net/. Nebudou vám tak růst nároky na prostor na počítačích využívaných více uživateli.

Praktická ukázka

Pro začátek práce se Zero Install je potřeba získat samotný správce balíčků. Ten buďto stáhnete z domovského webu projektu, nebo jej najdete už ve svých repositářích. V Debianu nebo Ubuntu tak bude stačit nainstalovat balíček zeroinstall-injector. Ten obsahuje vše potřebné.

Pak už stačí jen najít si nějaké balíčky. Nejjednodušší je opět navštívit domovský web, kde jich najdete celé hromady. Pak už stačí si vybrat a na řádce spustit:

# 0launch http://www.nongnu.org/clanbomber/zeroinstall/ClanBomber.xml

Proběhnou potřebné akce a aplikace (v tomto případě hra) se spustí. Zero Install totiž akci „Nainstaluj a spusť“ zjednodušuje na “Spusť“, protože to je z pohledu uživatele to, co je třeba udělat. Vždycky ale spouštět aplikaci tímto způsobem je krajně nepohodlné, a tak můžete využít utilitu 0alias, která vám vytvoří jednoduchý spouštěcí skript v některém ze zapisovatelných adresářů, které máte v $PATH.

Samozřejmě práce na řádce není jediným způsobem, jak Zero Install využít, existuje pohodlnější grafická varianta. Balíčkovač se totiž integruje do operačního systému tak, že se do aplikačního menu přidají dvě položky. Jedna umožňuje aplikace přidávat a druhá spravovat.

Při spuštění grafického instalátorku budete v malém dialogu dotázáni na URL popisného souboru (XML) a poté proběhne automatické stažení všeho potřebného. Po instalaci budete dotázáni na to, kam do menu chcete umístit patřičnou položku. Podle kategorie balíčku je vybráno správné umístění, ale můžete je změnit.

Program se jednoduše objeví v menu, odkud jej pak můžete spouštět.

V jednoduchém správci nainstalovaných balíčků pak máte možnost aplikaci spustit, přečíst si její dokumentaci, aktualizovat ji nebo ji smazat. Víc možností nemáte, ale není to ani potřeba.

Příjemné a překvapivě funkční

Zero Install mě překvapil svou jednoduchostí a přímočarostí. Mohli bychom říct, že se jedná o správce „portable verzí“ aplikací, které jsou známé ze světa Windows. Není třeba je instalovat do systému, ale zároveň nad nimi správce drží ochrannou ruku, aktualizuje je a umožňuje vám je zase pohodlně smazat.

bitcoin_skoleni

Pro linuxové prostředí by mohlo být větší rozšíření balíčků pro Zero Install velmi příznivé. Vývojáři nezaměření přímo na Linux by se už nemuseli bát bezbřehosti linuxového světa, ale správný balíček by dokázali vytvořit naprosto bez problémů a univerzálně.

Nakonec byste tak mohli přijít na jejich web a najít tam k instalaci jediný odkaz s tím, že pro jeho využití si máte nejdříve pořídit Zero Install. Odpadly by tak problémy s nekompatibilitou, ruční řešení závislostí u špatně sestavených balíčků a nadávání nad tím, že zrovna pro mou distribuci balíček připraven nebyl. Líbí se vám takhle představa také?

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.