Hlavní navigace

Arch Linux: balíčkovací systém

14. 6. 2007
Doba čtení: 5 minut

Sdílet

Arch Linux již máme nainstalovaný i nakonfigurovaný, už zbývá jen naučit se využívat jeho možností správy software. Dnes tedy nahlédneme do tajů archovského balíčkovacího systému, povíme si, jak psát PKGBUILDy, jak vypadá archovský balíček a čím si lze již tak dost jednoduchou práci ještě více usnadnit.

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.

jacman-1

Ú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.

jacman-2

… 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
}
jacman-3

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.

UX DAy - tip 2

guzuta

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@con­ference.jabber­.org na jabberu nebo na fórum archlinux.cz@ir­c.i.cz na IRC. Nově jsou k dispozici i české stránky Arch Linuxu včetně fóra.

Odkazy

Byl pro vás článek přínosný?

Autor článku

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.