Balíčkovací systém
Balíčkovací zázemí Arch Linuxu považuji za jednu z jeho největších výhod. Arch Linux dává k dispozici nejen komplexní balíčkovací manager se schopností instalace lokálních balíčků i balíčků ze sítě, znající závislosti, umožňující snadný upgrade a vůbec všechny vlastnosti, na které jsme z moderních balíčkovacích systémů zvyklí, ale disponuje i velmi důmyslným systémem pro tvorbu balíčků, systémem pro automatickou tvorbu balíčků z komunitních zdrojů a další. Důležitá a ne zcela samozřejmá vlastnost balíčkovacího systému Arch Linuxu je schopnost automatického odinstalování již nepotřebných závislostí ze systému.
Úvodní obrazovka Jacmanu.
Pacman, repozitáře, balíčky
Pacman je zkratka z package manager. Co se týče formátu balíčků, jedná se o prosté .tar.gz
obsahující soubory .FILELIST
se soupisem souborů v balíčku, .PKGINFO
s informacemi o balíčku a nepovinně též instalační skript .INSTALL
a pak samozřejmě soubory náležející instalovanému software.
Základních repozitářů je pět. Current je hlavní repozitář obsahující systémové balíčky, extra obsahuje spíše desktopové aplikace, desktopová prostředí a podobně, community obsahuje balíčky od důvěryhodných uživatelů (viz níže) a konečně testing a unstable slouží k testování balíčků. Rozhodně stojí za zmínku, že balíčky z current a extra repozitářů jsou při perfektní stabilitě velmi aktuální a není se tedy třeba bát toho, že rolling-updates přinese více škody než užitku.
Nedávno vyšel Pacman 3.0, který přinesl řadu vylepšení. Především byl konečně oddělen frontend od backendu, Pacman se zrychlil a bylo přidáno několik nových voleb. Dále byly přidány pomocné skripty rankmirrors
pro zjištění nejvýhodnějšího mirroru, repo-add
a repo-remove
pro správu repozitářů.
Nebudu zde suplovat manuálovou stránku, ale aspoň základy práce s Pacmanem zmíním. Aktualizace a upgrade systému se dělá pomocí pacman
-Syu
, instalaci zařídí pacman -S <package>
a odinstalaci včetně již nepotřebných závislostí a konfiguračních souborů pacman -Rsn
. Při instalaci lokálních balíčků využijete pacman -U <path_to_package>
a pacman -Qe
vypíše balíčky, jichž již není potřeba, tedy nejsou již závislostí žádného dalšího balíku a přitom jsme je neinstalovali sami.
Pacman bohužel sám o sobě nepodporuje barevný výstup. Existují neoficiální a jistě i funkční řešení, ale pokud se vám zrovna nechce překompilovávat Pacmana jen kvůli barvičkám, můžete si alespoň částečně vypomoci standardními linuxovými utilitami. Například barevné vyhledávání zajistí toto (přidejte do ~/.bashrc
):
pacsearch () { echo -e "$(pacman -Ss $@ | sed \ -e 's#current/.*#\\033[1;31m&\\033[0;37m#g' \ -e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \ -e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \ -e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )" }
ABS
ABS je zkratka z Arch Build System, který umožňuje velmi jednoduše a opakovatelně kompilovat balíčky v distribuci. Příkaz abs
sesynchronizuje strukturu buildů. Buildy, v Arch Linuxu PKGBUILDy, jsou stejně jako v Gentoo uspořádány v systému nenáhodou připomínající BSD porty. Naleznete je v /var/abs/
, přičemž své vlastní PKGBUILDy bývá zvykem dávat do /var/abs/local
.
… občas to i chvilku trvá …
PKGBUILD
PKGBUILD je soubor, v němž jsou obsaženy informace o balíčku nezbytné k jeho sestavení. Dává se do složky pojmenované stejně jako příslušný software, s tím, že PKGBUILD se pochopitelně musí jmenovat PKGBUILD, nikdy jinak, protože by nebyl rozpoznán a utilitka makepkg by neznala instrukce k sestavení balíčku. Vypadat může třeba nějak takto:
pkgname='jruby' # jméno balíčku pkgver='1.0' # verze pkgrel=1 # pkgdesc="" # stručný popis arch=('i686') # architektury, v nichž jej lze sestavit url="http://dist.codehaus.org/$pkgname/$pkgname-bin-${pkgver}.tar.gz" license=('GPL') makedepends=() # závislosti nutné pouze pro sestavení balíčku depends=() # vlastní závislosti balíčku provides=() # jaké balíčky funkčně zastupuje conflicts=() # s kterými balíčky nemůže být nainstalován dohromady replaces=() # balíčky, které nahrazuje backup=() # soubory, které se mají zálohovat (klasicky ty v /etc) install= # jméno instalačního skriptu, zpravidla $pkgname-install source=(http://dist.codehaus.org/$pkgname/$pkgname-bin-$pkgver.tar.gz) noextract=() md5sums=(generate with makepkg -g) build() { cd $startdir/src/$pkgname-$pkgver rm bin/*.bat mkdir -p $startdir/pkg/opt/jruby cp -R ./{bin,lib} $startdir/pkg/opt/jruby }
Výběr balíčků v Jacmanu.
Makepkg
K sestavení balíčku používáme utilitu makepkg
. Její použití je prosté – jednoduše vlezeme do složky s patřičným PKGBUILDem a zavoláme příkaz makepkg
, který podle informací a instrukcí v PKGBUILDu balíček stáhne, rozbalí, zkompiluje a vytvoří z něj validní archovský balíček.
Aurbuild
Aurbuild je utilitka pro práci s PKGBUILDy z komunitních zdrojů. AUR je zkratka z Arch User Repository a je to první místo, kde je třeba hledat PKBDUILDy, když náhodou nejsou v oficiálním repozitáři. Balíčky zde nehledejte, jsou zde opravdu „pouze” PKGBUILDy dodané jednotlivými uživateli.
Použití Aurbuildu je jednoduché – zavoláte aurbuild -ba <program>, Aurbuild sám stáhne PKGBUILD, zavolá na něj makepkg, které vytvoří balík a poté je zavolán pacman -U, který balík nainstaluje. Prosté, čisté, efektivní. Aurbuild toho ovšem zvládá více, můžete jím třeba dávat hlasy jednotlivým balíčkům.
Co se týče přijímání komunitních balíčků, Arch uznává tzv. trusted user, tedy důvěryhodného uživatele. Důvěryhodný uživatel je něco jako kontributor v jiných distribucích, voleni jsou ale na základě kvality jejich balíčků, která je vyjádřena procentem pozitivních hlasů v AURu pod jejich balíčkem. Důvěryhodný uživatel může dát binární balíček do repozitáře „community”. Považuji tento systém za velmi rozumný a dlouhodobě stabilní.
Grafické frontendy
Pro Pacman existují i grafické frontendy. Není jich moc a používá je poměrně málokdo, protože to není „Arch way”, nicméně máte-li o ně zájem, jsou k dispozici.
Jacman
Jacman je v Javě napsaný GTK+. Jeví se sice poměrně použitelně, bohužel občas se mi zdál poměrně pomalý.
Guzuta
Guzuta je dalším grafický frontend k Pacmanu, napsaný v Pythonu, opět v GTK+. Guzuta je svým návrhem jednodušší, a řekl bych i příjemnější. Pokud máte rádi Synaptic z Debianu, Guzutu patrně oceníte spíš než Jacman.
Pohled na Guzutu.
Česká komunita
Potřebujete-li s Arch Linuxem poradit, chcete-li se podělit o své tipy a zkušenosti nebo prostě jen pokecat o svém miláčkovi, můžete zajít na konferenci archlinux.cz@conference.jabber.org na jabberu nebo na fórum archlinux.cz@irc.i.cz na IRC. Nově jsou k dispozici i české stránky Arch Linuxu včetně fóra.