Portál AbcLinuxu, 26. dubna 2024 04:36

Balíčkovací systém Gentoo Linuxu - I

5. 3. 2004 | Ondřej Krčmář
Články - Balíčkovací systém Gentoo Linuxu - I  

Dvoudílný článek představuje balíčkovací systém, kterým se může pochlubit distribuce Gentoo. V první části je představena filosofie Portage a jsou vyjmenovány výhody a nevýhody daného řešení.

Balíčkovací systém Gentoo je velmi povedený. Přesto se chci záměrně vyhnout porovnávání s jinými distribucemi založenými na rpm nebo apt. Gentoo je prostě jen něco další, trochu jiné... ať si každý udělá srovnávací představu sám.

Distribuce Gentoo Linux je založená téměř výhradně na zdrojových kódech, jedná se o takzvanou source nebo meta-distribuci. Neexistují zde žádné číslované verze distribuce, vývoj je nepřetržitý. To znamená, že pokud cokoli instalujete/aktualizujete, stahují se aktuální zdrojové kódy + záplaty a kompilují se ve vašem PC. Vše je ale dobře zautomatizováno a obsluhuje se to snadněji, než by se mohlo na první pohled zdát. Některé věci jako OpenOffice.org, Java, hry... jsou k dispozici v binární podobě a není nutné je kompilovat. Než se pustíme do podrobností, pokusím se shrnout některé obecné klady a zápory:

Několikrát pro

Automatizace řešení závislostí

Závislosti mezi balíčky při instalaci si řeší systém automaticky, a tak je nemusí řešit a dohledávat uživatel (root). Nainstalovat nový SW do funkčního systému je tedy velmi triviální záležitost i pro začátečníka. A to platí i v případě, že to způsobí spoustu závislostí.

Pružnost závislostí

Je možno standardním způsobem ovlivnit závislosti u balíčků. Díky tomu se do systému nedostanou zbytečné, nepotřebné balíčky. Třeba MPlayer lze instalovat s/bez jeho GUI, lze ovlivnit, co bude/nebude podporovat (OSS, ALSA, xv, SDL, Matrox, Gtk2, DirectFB...). Když mu zakážeme např. Gtk, nebude mít závislost na Gtk.

Možnost volby verze balíčků

Jedna z často zmiňovaných výhod je, že s Gentoo Linuxem jste stále up-to-date. Ale ono to jde i naopak. Pokud chcete, můžete být konzervativní a jen záplatovat danou verzi programu, když nechcete přecházet na vyšší. Ani v takovém případě by neměly nastat potíže v závislostech (nové vs. staré balíčky) - díky kompilaci až na místě.

Stahování

Není třeba nic hledat na internetu, balíčkovací systém ví, odkud má co stahovat na základě informací v Portage tree, ten obsahuje řadu mirrorů. Pro stahování je používán wget, umí navázat přerušené spojení. Můžeme i nechat vypsat jen URL na potřebné soubory a stahovat jinde na rychlejším připojení.

Aktuálnost

Dochází k velmi časté aktualizaci ze strany vývojářů Portage. Nejnovější verze jednotlivých programů jsou svižně zařazeny do Portage tree jako nové ebuildy (ebuildy pro KDE 3.2 byly snad úplně současně se zdrojáky). To však neznamená, že se nám bude systém neustále a nekontrolovaně měnit pod rukama a nutit nás tak používat neověřený nový SW, jak by se mohlo zdát.

Obsah Portage

Portage tree obsahuje opravdu velké množství programů (přes 6000 balíčků). Včetně těch, které obvykle nebývají součástí distribuce - témata z kde-look.org, nVidia ovladače, Ati ovladače, Flash-plugin, Real Player + kodeky, několikero provedení Javy, několik stovek her - téměř všechny, o kterých vychází na Rootu seriál (America's Army, Flight Gear, Unreal Tournament, Quake, Enemy Territory...). Je k dispozici celá řada jader - jak podle větve (od 2.0 (!) po 2.6), tak i podle obsahu, od vanilkových až po ozáplatované speciály a jádra pro různé architektury (ppc, sparc, ia64...). Portage obsahuje spoustu dalších zajímavých věcí, které se sem nevejdou. Jak jsou v něm roztříděny ebuildy do kategorií a v jakém stavu se momentálně nacházejí, můžete spatřit zde.

Optimalizace

Existuje zde možnost přesné optimalizace binárního kódu na daný HW - užití instrukcí MMX, SSE, 3Dnow. Optimalizace pro 386 až po Athlon, AthlonXP, Pentium 4, AMD64... Následkem toho je možné zrychlení o několik procent oproti balíčkům šitým na míru obecné architektuře 386, 586 nebo 686. Celkově je zrychlení spíše jen vedlejší efekt, obecně se tomu někdy přikládá až moc velká váha. Na druhou stranu, za specifických podmínek může být nárůst rychlosti docela citelný.

Přehlednost

Pokud máte představu, na co potřebujete nějaký program, ale nevíte který a kde ho hledat, vyplatí se podívat do Portage tree. Užitečná věc je také Kportage (GUI pro KDE), bohužel ne všechny věci v Kportage fungují, jak by měly, a vývoj této šikovné utility asi před 3/4 rokem nějak ustal.

Několikrát proti

Nároky na HW

Z určitého pohledu je nevýhodou kompilace až na místě. Zabere to samozřejmě čas a chce to co nejvýkonnější CPU + rychlou velkou RAM. Při trendech výkonů dnešních procesorů to bude čím dál menší problém. Prvotní kompilace, instalace všeho pro desktop zabere třeba i 1-2 dny. To je ale jen jednou na začátku, další udržování systému v aktuálním stavu už je mnohem schůdnější a při aktualizaci nových balíčků jde normálně počítač používat paralelně s tímto automatizovaným procesem. Doporučuji spustit proces aktualizace s nízkou prioritou, pak vás nebude téměř vůbec omezovat při současné jiné práci, která potřebuje výkon. Průměrná pravidelná denní aktualizace mého desktopu zabere odhadem pod 10 minut, vydání nového KDE nebo XFree je jistě na déle. Pokud by se mělo jednat o server, není problém tvořit si binární balíčky na jiném počítači, aby server nebyl zatěžován kompilací, a hotové je pak na server instalovat. Obsah celého serveru můžeme mít uvnitř chrootu na jiném PC (klidně i v jiném Linuxu) pro potřeby ladění, kompilování a jako zálohu.

Některé časy, kompilace + vytvoření binárního balíčku na HW: AthlonXP 2000+, 512 MB RAM:

balíček čas [minut]
binutils 5
gcc 48
gimp 20
glibc 38
k3b 20
kdevelop 55
kernel 18
mozilla 61
mplayer 4
qt 45
quanta 27
xfree 52
xmms 3

Závislost na internetu

Je třeba mít připojení k internetu, samozřejmě co nejrychlejší. Při každodenní až týdenní aktualizaci to jde přežít i s GPRS připojením. Čím bude cyklus aktualizace delší, tím budou přenášené objemy zdrojáků větší. Často znamená aktualizace nějakého programu jen stažení záplaty. Zdrojové balíčky lze samozřejmě stahovat i jinde a přenést na počítač, který nemá připojení na internet (nebo jen pomalé).

Optimalizace

Výhoda přesné optimalizace binárního kódu se může stát i nevýhodou, pokud si ušijeme celý systém přesně na AthlonXP a nečekaně bude potřeba provozovat ho na jiném počítači, kde bude třeba Intel 386 ;-). Vše lze překompilovat na jinou architekturu, ale nějaký čas to potrvá.

Konfigurace

Nová instalace celého systému je pro začátečníka v Linuxu hodně tvrdý oříšek. Není tu žádný průvodce a celý systém si vlastně poskládáte pomocí postupné instalace všeho potřebného. Instalace samotná není nic tak obtížného díky automatickému řešení závislostí. Horší je pro začátečníka následná konfigurace a zprovoznění, to se nedělá pomocí nějakého grafického prostředí, ale textově - nastavení služeb, monitoru, myši, klávesnice, X, xdm... Na webu Gentoo.org je ale velmi podrobná a přehledná dokumentace, jak přesně postupovat.

Další nevýhody vymyslíte za domácí úkol ;-).

Portage a ebuild

Portage je základem celé Gentoo distribuce, je to databáze všeho "nainstalovatelného". Portage tree je adresářová struktura (/usr/portage/...) přehledně dělená do skupin obsahujících tisíce balíků - ebuildů. Ebuild je malý skript, který zařídí stažení, konfiguraci, kompilaci a instalaci dané verze programu včetně vyřešení závislostí na ostatních ebuildech. Ebuildy se dělí na ty, které jsou označeny jako nestabilní (tzv. maskované), a ty ostatní. Kupříkladu pro server Apache momentálně existují následující:

apache-1.3.27-r3.ebuild odmaskován
apache-1.3.27-r4.ebuild odmaskován
apache-1.3.28.ebuild maskován
apache-1.3.28-r1.ebuild maskován
apache-1.3.29-r1.ebuild odmaskován
apache-1.3.29.ebuild odmaskován
apache-2.0.46.ebuild odmaskován
apache-2.0.47.ebuild odmaskován
apache-2.0.47-r1.ebuild maskován
apache-2.0.48.ebuild odmaskován
apache-2.0.48-r1.ebuild odmaskován
apache-2.0.48-r2.ebuild maskován
apache-2.0.48-r3.ebuild maskován
apache-2.0.48-r4.ebuild maskován

Každý ebuild má svoji webovou stránku, Apache zde

Můžeme se tedy rozhodnout, že se pohodlně povezeme na vlně nejnovějších stabilních ebuildů pomocí automatické aktualizace celého systému. Pokud víme, co a proč děláme, je možno používat i ty nejnovější, označené ještě jako nestabilní, nebo naopak starší verze daného programu. U velmi čerstvých nestabilních ebuildů se může mimořádně i stát, že selže kompilace. Pojem nestabilní ebuild ale neznamená ani tak nestabilitu samotného ebuildu, jako spíš neověřenost verze programu, který zastupuje. Označení -r1 za číslem verze obvykle značí, že jde o danou verzi obohacenou o nějakou tu záplatu, -rc1 naopak znamená, že daná verze je ještě neúplná. Jak je vidět, můžeme se držet určité verze a tu jen záplatovat.

Krom ebuildů obsahuje Portage ještě menší množství class. Class je něco jako hromada ebuildů. Například kde.class obsahuje všechny ebuildy týkající se KDE (kdelibs, kdebase, ...).

Příště...

Druhý díl již bude ryze praktický. Dozvíte se mimo jiné o parametru USE, který ovlivňuje způsob kompilace. Kromě toho v něm bude množství konkrétních příkladů použití příkazů pro ovládání balíčkovacího systému.

Související články

Balíčkovací systém Gentoo Linuxu - II
Seriál: Instalace softwaru v Linuxu
Seriál: Gentoo ebuild
Seriál: Rukověť baliče RPM
Seriál: Balíčkovací systém Arch Linuxu
Smart Package Manager - instalujeme chytře
Zdroje balíčkov pre Ubuntu
Na co se často ptáme: Balíčkovací systémy
Balíčkovací systém Mandrake Linuxu
Gentoo Linux 1.4
Zajímavosti ze světa Linuxu 2

Odkazy a zdroje

Gentoo.org

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.