K čemu je balíčkovací systém
Abychom si mohli vysvětlit, k čemu nám může být balíčkovací systém užitečný, musíme nejdřív vědět, co je to balíček. Balíček je, obecně řečeno, nějaký archiv, ve kterém se nachází software. Jak tento archiv vypadá, záleží na konkrétní distribuci, respektive na balíčkovacím systému, který distribuce používá. Balíčky můžeme rozdělit na zdrojové a binární. Jak jejich název napovídá, ve zdrojovém balíčku se nacházejí zdrojové kódy softwaru, zatímco v binárním balíčku naleznete software již zkompilovaný.
Balíčkovací systém usnadňuje správu softwaru. Bez jeho pomoci musíte například vědět, zda software, který instalujete, potřebuje ke svému běhu jiný software, určitou verzi nějaké knihovny nebo zda instalací nezpůsobíte konflikt s jiným softwarem ve vašem systému. Nakonec skončíte u mnohdy pracného a na procesor a čas náročného kompilování softwaru ze zdrojových kódů a prakticky znovu „objevujete kolo“, protože stejné problémy, na které při kompilaci narážíte, před vámi zcela určitě již někdo řešil. Pomocí balíčkovacího systému tedy zejména pohodlně instalujete nebo odstraňujete software. Poskytnutý komfort závisí na tom, jak moc je balíčkovací systém ve vaší distribuci propracovaný. Co vám může nabídnout balíčkovací systém Debianu, se dozvíte v tomto seriálu.
Jak vypadá binární balíček Debianu
Prozatím ponecháme stranou fakt, že se software musí před instalací zkompilovat pro danou architekturu, odložíme také zdrojové balíčky, z nichž se binární balíčky kompilují, a podíváme se podrobněji do binárních balíčků, které nám distribuce poskytuje, abychom mohli pohodlněji instalovat software.
Binární balíček Debianu je distribuován v jediném souboru. Jméno tohoto souboru je následujícího tvaru: jmeno_verze-revize_architektura.deb. Pokud tedy narazíme na soubor gedit0.9.6–4_i386.deb, jeho název nám napovídá, že se jedná o balíček softwaru gedit, verze 0.9.6, v distribuci revize 4, který je zkompilován pro architekturu i386. Možná si kladete otázku, k čemu jsou vlastně revize. Vývojář softwaru, který většinou nemá s Debianem nic společného, nebývá často stejnou osobou jako člověk, který vytváří daný balíček. V terminologii Debianu je vývojář softwaru označován jako „upstream maintainer“, zatímco výrobce balíčku jako „maintainer“ (někdy též „package maintainer“). Pokud chce maintainer provést nějaké změny v balíčku při zachování stejné verze softwaru, zvýší pouze číslo revize. Tedy verze 0.9.6–3 a 0.9.6–4 obsahují stejnou verzi softwaru, pouze jsou v ní provedeny změny od package maintainera, které ale na druhou stranu mohou být poměrně zásadní.
Jak jste si zřejmě všimli, balíčky Debianu nejsou distribuovány ve formátu .rpm, jako je tomu u některých jiných mainstreamových distribucí (např. Red Hat, SuSE, Mandrake). Debian totiž disponuje vlastním formátem .deb. V následujícím textu si popíšeme, jak vypadá uvnitř binární balíček Debianu od verze 0.93. Předchozí verze Debianu používaly odlišný formát, který byl však také nazýván .deb. Soubor .deb je archiv programu ar. Tento archiv umožňuje složit do jednoho souboru (v našem případě .deb) několik souborů (tzv. členů). V případě balíčku Debianu je první člen pojmenován debian-binary, druhý člen nese názevcontrol.tar.gz a třetí má jméno data.tar.gz. O tom se můžeme jednoduše přesvědčit:
$ ar tv gedit_0.9.6-4_i386.deb rw-r--r-- 0/0 4 Jan 13 08:23 2002 debian-binary rw-r--r-- 0/0 5078 Jan 13 08:23 2002 control.tar.gz rw-r--r-- 0/0 633430 Jan 13 08:23 2002 data.tar.gz $
Po rozbalení archivu se podíváme na soubory v něm obsažené blíže:
$ ar xv gedit_0.9.6-4_i386.deb x - debian-binary x - control.tar.gz x - data.tar.gz $
V souboru debian-binary najdeme verzi formátu .deb. V současné době se používá verze 2.0:
$ cat debian-binary 2.0 $
Soubory control.tar.gz a data.tar.gz jsou, jak jejich názvy napovídají, archivy programu tar zkomprimované programem gzip. Archiv control.tar.gz obsahuje instalační a deinstalační skripty, soubor s kontrolními součty a v neposlední řadě také soubor s informacemi o balíčku (např. informativní popis balíčku, popis závislostí na jiných balíčcích atd.):
$ tar t -f control.tar.gz -vvz drwxr-xr-x root/root 0 2002-01-13 08:23:02 ./ -rwxr-xr-x root/root 594 2002-01-13 08:23:00 ./postinst -rwxr-xr-x root/root 385 2002-01-13 08:23:00 ./prerm -rwxr-xr-x root/root 147 2002-01-13 08:23:00 ./postrm -rw-r--r-- root/root 11436 2002-01-13 08:23:02 ./md5sums -rw-r--r-- root/root 1348 2002-01-13 08:23:02 ./control $
A konečně soubor data.tar.gz obsahuje samotný software uspořádaný v přesně stejné adresářové struktuře, jako se nainstaluje do vašeho systému.
Při práci s balíčky Debianu však pochopitelně příkazy ar nebo tar používat nemusíme, protože součástí balíčkovacího systému jsou také nástroje, pomocí nichž lze s balíčky komfortně pracovat. Co nám tyto nástroje umožnují a jak se používají, si ukážeme příště.
Tento článek sponzoruje soLNet, s.r.o..