Do Linuxu lze nové programy nainstalovat v podstatě dvěma způsoby. Z binárních balíčků a ze zabaleného souboru se zdrojovými kódy. Nelze to ale hned brát jako dogma, existují i balíčky se zdrojovými kódy a stejně tak binární soubory se nemusejí vždy vyskytovat ve formě balíčku.
Binární balíčky
Každá distribuce používá určitý balíčkovací systém. Z nejznámějších je to systém RPM, který používá RedHat, Fedora, Mandrake, SUSE a řada dalších distribucí. V těsném závěsu je systém APT, který používá balíčky s příponou DEB, tyto pojmy bývají často zaměňovány. APT systém používá Debian, pro který byl vyvinut, a pak další distribuce, které jsou na Debianu založeny, např. Knoppix a jeho deriváty. Stranou by neměl zůstat ani balíčkovací systém distribuce Slackware, který pro jeho jednoduchost a přímočarost někteří ani nenazývají balíčkovacím systémem. Ti, kdo Slackware používají, se mnou jistě budou souhlasit, že to pravda není.
Jakýkoliv binární balíček může být buď tzv. distribuční, to znamená, že se nachází na CD (DVD) se samotnou distribucí, nebo patří do druhé skupiny, kterou tvoří balíčky třetích stran (autorů programů). Autor vždy vydává zabalené zdrojové kódy, ale pro pohodlí uživatelů může vytvářet binární balíčky pro různé distribuce. Pěkným příkladem může být stránka ICQ klienta SIM. Binární balíček je určen vždy pro konkrétní verzi konkrétní distribuce. Je možné, že RPM balíček bude fungovat ve dvou rozdílných distribucích, které jsou přibližně stejně staré (Fedora, Mandrake), ale nikdo vám nezaručí, že to půjde nebo že bude program korektně fungovat. S největší pravděpodobností balíček nepůjde nainstalovat kvůli nevyřešeným závislostem, ačkoliv požadované programy už ve vašem systému máte, jen se jejich balíčky jmenují trochu jinak.
Výhody binárních balíčků
- automatické hlídání závislostí
- pro uživatele jednoduchá instalace i odinstalace
- existují grafické nadstavby nad balíčkovací systémy (tady je potřeba vyzdvihnout Mandrake Linux)
- v případě distribučních balíčků téměř jistota, že se nainstalují a budou fungovat
Nevýhody binárních balíčků
- zejména zkušeným uživatelům občas automatické závislosti vadí
- programy jsou kompilovány většinou pro i386, což u některých typů programů znamená značný pokles výkonu
- stává se, že se pokazí RPM databáze a systém zapomene, jaké má balíčky
Zde je vhodné místo pro povídání o zdrojových balíčcích. Toto označení, ačkoliv se používá, je dosti nepřesné. Znamená to „balíček, který obsahuje zdrojové kódy“. Výhody zdrojového kódu jsou popsány níže. Zdrojový balíček poznáte podle toho, že má většinou v názvu „src“, takže např. FaxMail-2.3–9mdk.src.rpm. Takový balíček můžete normálně nainstalovat, v systému vám ale nepřibude nový program, pouze jeho zdrojové kódy, se kterými si můžete dělat, co chcete (např. zkompilovat :-).
Zdrojové balíčky mají oproti běžným zdrojovým kódům podstatnou výhodu, jsou zoptimalizovány a vybaveny patchi pro konkrétní verzi konkrétní distribuce (jako ostatně všechny distribuční balíčky), což vám zaručuje, že balíček půjde bez větších problémů přímo zkompilovat a nainstalovat, ale hlavně převést do podoby binárního balíčku. K tomu slouží u rpm spec soubory, v Debianu adresáře debian, které jsou ve zdrojových balíčcích obsaženy. Hodí se to např. v případě, kdy binární balíčky pro vaši exotickou platoformu nejsou vůbec k dispozici, nebo pokud na jednom či více počítačích potřebujete speciálně upravenou verzi nějakého programu. Sáhnete tedy pro zdrojovém balíčku, provedete potřebné změny, zkompilujete do podoby binárního balíčku (rpmbuild, dpkg-buildpackage), a ten pak instalujete na stanice. Tento postup je doporučován více než kompilovat z klasických zdrojových kódů.
Jinou možností je systém portů, který v různých variantách využívají SourceMage Linux, Gentoo a BSD systémy. Porty zachovávají kontrolu závislostí, lze na ně aplikovat grafické utility pro jednoduchou obsluhu (ale vzhledem k cílové skupině uvedených distribucí tomu tak pravděpodobně nebude), stejně tak má uživatel docela jistotu, že se balíček zkompiluje bez problémů. Ta je sice o něco menší než v případě instalace binárních balíčků, ale stále je výrazně větší než v případě komilace přímo ze zdrojových kódů. Jak už jsem nastíníl, systém portů jsou vlastně zdrojové balíčky (většinou pouze ve formě textového souboru, který popisuje co a jak a vlastní zdrojové kódy stahuje z internetu přímo od výrobce programu), které se ale při instalaci kompilují, takže po požadavku na nějaký program si systém stáhne zdrojové kódy, sám je přeloží a nainstaluje. Asi tušíte, že systém portů je dobrá věc. Určitě ano, kombinuje jednoduchost binárních balíčků s výhodou kompilace ze zdrojových kódů. To je ale vyváženo dobou instalace takového systému. Pokud se rozhodnete nainstalovat si Gentoo, počítejte s několika dny kompilace.
Zdrojové soubory
Kompilace a instalace ze zdrojových souborů se volí v případě, že požadovaný program není na distribučním CD ve formě balíčku, nebo je ve staré verzí, nebo když autor programu nedodává binární balíček pro vaši oblíbenou distribuci, nebo když chcete využít zvýšení výkonu při kompilaci přímo na konkrétní počítač (typicky MPlayer), nebo když potřebujete nějaká speciální nastavení, nebo prostě když chcete. Pak tedy nezbývá než na stránkách programu najít soubor program-1.2.3.tar.gz, případně .tgz nebo .bz2, podle toho, jakým programem byly zdrojové soubory zabaleny. Formát zdrojových souborů naštěstí nebývá jen tak nahodilý. Existují konvence GNU a naprostá většina programů je dodržuje. Spočívají v použití programů autoconf, automake a spol. Ve většině případů tedy stačí zdrojové soubory rozbalit a spustit „svatou trojici“, neboli:
./configure make make install
Skript ./configure nakonfiguruje zdrojové soubory, zjistí si ze systému celou řadu informací, ověří přítomnost systémových knihoven apod.make zdrojové soubory zkompiluje. make install provede jejich instalaci – „zkopírování“ do adresářové struktury Linuxu (/usr/local/bin/, /usr/share/program/, …). Jak už jsem napsal výše, každá distribuce požívá nějaký balíčkovací systém, má tedy přehled o programech, které jsou v systému, a může je bezezbytků odinstalovat. To při použití make install není možné, protože ten prostě soubory někam nakopíruje a končí. Existuje ještě make uninstall, ale ten se moc nepoužívá. Proto vznikl program checkinstall, který zajistí to, že zkompilované soubory se nekopírují do adresářové struktury, ale vytvoří se z nich binární balíček, jehož nainstalování je plně v moci balíčkovacího systému, stejně jako jeho odinstalování. Checkinstall zvládá systémy RPM, APT, Slackware a dost možná i jiné. Článek o checkinstallu bude následovat.
Více o kompilaci zdrojových souborů naleznete v článku 1272 na ROOTovi.
Na závěr ještě zbývá popsat nestandardní způsoby instalace. Častým případem je zabalený soubor program.tgz, který stačí kamkoliv rozbalit (konvence doporučují /usr/local/) a spustit uvnitř obsažený program. Takto se distribuuje například WWW prohlížeč FireFox, poštovní klient Mozilla Thunderbird či některé hry. V těchto zabalených souborech nenajdete zdrojové kódy. Ty si můžete nebo nemůžete (podle přání autora) stáhnout zvlášť. Pak tu jsou programy s vlastním instalátorem, příkladem budiž OpenOffice.org. No a nakonec balíčky se zdrojovými soubory, které nepoužívaji autoconf a spol., tudíž neobsahují skript configure (nebo ho obsahují, ale principem činnosti se zcela liší od výše popsaného případu). V takových případech nezbývá nic jiného než si pořádně přečíst dokumentaci a modlit se, abyste ji pochopili. Příkladem za všechny budiž FreePascal. Nutno dodat, že podobné programy jsou často černými ovcemi v linuxové rodině. Sami jistě cítíte, že není vše v pořádku, že takové programy jsou k Linuxu jaksi připláclé z boku a nejsou dostatečně zakomponovány v systému.