Reklama
 
Blog | Lukáš Jelínek

GNU/Linux – balíčkové systémy

Když jsem četl diskusní příspěvky u blogového zápisu Pavla Podaného Je GNU/Linux pro běžného uživatele?, napadlo mě, že by nebylo od věci připomenout jednu velice zajímavou "vymoženost", kterou uživatelé GNU/Linuxu mají.

Snad každý, kdo používá systém Windows, někdy vlastnoručně instaloval nějaký program stažený z Internetu nebo získaný nějakou jinou cestou. Scénář je většinou velmi podobný. Spuštění instalátoruPokračovat(licenční ujednání) Souhlasím(instalační adresář) Pokračovat(výběr součástí) Pokračovat(připraveno k instalaci) Nainstalovat(instalace dokončena) Konec. Postup se může mírně lišit, být třeba o něco delší nebo naopak kratší, ale v zásadě to vypadá právě takto.

Vyjde nová verze, opravující řadu chyb (bezpečnostních i jiných). Co musí udělat uživatel, aby aktualizoval svoji instalaci na novou verzi? Obvykle projít celou procedurou znovu. Některé programy sice nabízejí přímo možnost aktualizace (bez nutnosti proklikat x dialogů), ale z celkového počtu jsou jich maximálně jednotky procent.

V GNU/Linuxu je to obvykle úplně jinak. Většina distribucí je totiž založena na tzv. balíčkových (někdo říká též „balíčkovacích“) systémech. I když se tam vyskytují i programy, které si instalují způsobem známým z Windows, pro drtivou většinu programů to neplatí. Balíčkové systémy jsou založeny na úplně jiné koncepci – a instalace takových programů je mnohem jednodušší a má i další výhody.

Reklama

Než popíšu, jak to funguje, tak řeknu ještě něco k ovladačům. I tady se situace od Windows podstatně liší. Jen velmi málo zařízení (např. grafické karty nVidia) vyžaduje instalaci ovladačů poskytovaných výrobcem. Většina má naopak ovladače v tzv. hlavním stromě jádra (oficiální zdrojové soubory, z nichž se kompiluje jádro, které pak v této nebo mírně upravené podobě putuje do distribucí) a ovladač je tedy k dispozici hned po instalaci, pokud se nejedná o skutečnou novinku. Ve Windows je sice mnoho ovladačů také přímo v instalaci, ale protože je cyklus vydávání nových verzí Windows mnohem delší, je pravděpodobnost chybějícího ovladače podstatně vyšší.

A nyní už k samotným balíčkovým systémům. Jsou založeny na filosofii, že každý program, knihovna, doplněk atd. má svůj samostatný balíček. Balíček je v zásadě archiv (bývá komprimovaný, čili lze si to představit jako ZIP archiv), který má v sobě navíc ještě programy (skripty) pro instalaci, odinstalaci, aktualizaci a pár dalších činností.

Balíček může člověk získat různými cestami. Jednak je mnoho balíčků v linuxových distribucích, balíčky lze získat od tvůrců programů, ale hlavně existují balíčkové repozitáře – ještě o nich bude řeč. V linuxové distribuci je pak program (nebo více programů), který umí s balíčky pracovat – instalovat, odinstalovávat, aktualizovat apod.

V čem spočívají výhody balíčků? Za prvé, instalace/aktualizace/odinstalace je prakticky záležitost jednoho kliknutí v příslušném programu. Pro instalaci většího počtu programů (třeba i desítek nebo stovek najednou) si stačí zaškrtat jednotlivé balíčky v seznamu a spustit instalaci. Žádné proklikávání se přes stále stejné dialogy. Stejně jednoduše lze i aktualizovat nebo odebírat programy.

Malá vsuvka: Jak se tady odsouhlasuje licence, případně vkládá licenční klíč? Je to jednoduché – drtivá většina balíčků je šířena pod některou licencí (obvykle GPL, LGPL, BSD, Apache apod.), která nijak neomezuje normální použití programu. Balíček obsahuje informaci, pod jakou licencí se šíří – tu si zájemce může zobrazit. Programy šířené pod jinými licencemi většinou zobrazí licenci (a požadavek na souhlas) při prvním spuštění – tamtéž se vkládá případný licenční klíč. Vyskytují se i jiné postupy (např. aktivační program).

Dále tu máme repozitáře (úložiště). Každý tvůrce linuxové distribuce má repozitář balíčků, kde jsou uloženy všechny balíčky – nejen ty, které jsou na instalačním médiu, ale i všechny aktualizace. Proto aktualizovat libovolný program lze pouhým kliknutím – buď pro jeden program (případně více), nebo i pro celý systém. Dá se i nastavit, aby to probíhalo plně automaticky. Lze používat i jiné repozitáře, než poskytuje dodavatel distribuce. Vidíte ten rozdíl? Ve Windows (přes Windows Update) můžete aktualizovat jen systém samotný, tady aktualizujete všechny programy, které jsou v některém z repozitářů. V repozitářích lze i vyhledávat, takže když chcete najít program pro určitou činnost (třeba e-mail, video apod.), stačí zadat dotaz.

Zajímavou věcí je i automatické řešení závislostí. Ve Windows je řešení závislostí odpovědnost autora programu. Předpokládá-li, že máte nějakou knihovnu, a ona to není pravda, program nebude fungovat (a běžný uživatel to obvykle nemůže vyřešit). Naopak, pokud knihovnu k programu přiloží, může se stát, že budete mít v počítači tutéž knihovnu dvacetkrát, klidně i v různých verzích, různě děravých. Balíčkový systém závislosti vyhodnocuje a dokáže sám zajistit instalaci balíčků, na kterých jiný balíček závisí. Některé systémy umí navíc též doporučit další balíčky, které by se uživateli mohly hodit.

Zkrátka, balíčkové systémy jsou velmi příjemná a užitečná věc. Nicméně se musím stejně zmínit o jejich nedostatcích. Prvním je, že balíčkových systémů je několik (např. RPM, Debian, ebuild, PET a další) a nejsou vzájemně kompatibilní. Sice existují nástroje pro vzájemné převody, ale jejich používání často vyžaduje ještě další ruční zásahy. Nelze tak balíček, který je k dispozici jen v jednom systému, jednoduše přenést do jiného.

Dalším problémem jsou již zmíněné závislosti. Někteří vývojáři a tvůrci distribucí se bohužel nechovají, jak by měli, proto vytvářejí zbytečně mnoho závislostí i v případech, kdy to není potřeba. Pak se může klidně stát, že se kvůli prográmku o velikosti 100 KB instaluje i nějaká knihovna velká 5 MB, a to jen proto, že je potřeba pro nějakou funkcí, která se používala v minulosti nebo je potřeba pro volitelnou součást programu (která není přítomna). Podobným takovým problémem je nemožnost mít současně více verzí téhož programu nebo knihovny. V obou případech je potřeba ruční zásah, který ale často přesahuje znalosti běžného uživatele.

A konečně posledním problémem jsou rozdílové balíčky. Jen málo systémů je podporuje, takže se i kvůli jedinému změněnému souboru musí stahovat a instalovat celý velký balík. Toto by se ale mělo do budoucna zlepšit.


Celý tento text měl za cíl informovat o možnostech, které GNU/Linux nabízí. Balíčkové systémy jsou jednou z nich. Podobné informace budu přinášet i v budoucnu.