Arch Linux: balíčkovací systém

Jakub Šťastný 14. 6. 2007

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.

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

Lupa.cz: Jak EET vidí ajťák aneb Drahá vražda UX

Jak EET vidí ajťák aneb Drahá vražda UX

120na80.cz: Vyzrajte na návaly a pocení v přechodu

Vyzrajte na návaly a pocení v přechodu

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Vitalia.cz: Proč máme prasklý chléb nejraději?

Proč máme prasklý chléb nejraději?

Podnikatel.cz: Senát chce zavřít obchody na 7 svátků

Senát chce zavřít obchody na 7 svátků

Podnikatel.cz: Když už je sexy, tak ať taky funguje

Když už je sexy, tak ať taky funguje

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

120na80.cz: Zjistěte, zda je vaše klíště infikované

Zjistěte, zda je vaše klíště infikované

Vitalia.cz: Děti jsou sportem opotřebované

Děti jsou sportem opotřebované

Podnikatel.cz: Šizený guláš na pultě. Jako Lidl to nedělejte

Šizený guláš na pultě. Jako Lidl to nedělejte

DigiZone.cz: Živí mrtví budou na AMC koncem srpna

Živí mrtví budou na AMC koncem srpna

Podnikatel.cz: Alza radí e-shopům, jak opustit Heureku

Alza radí e-shopům, jak opustit Heureku

Podnikatel.cz: Rošáda v živnostech. Týká se vás?

Rošáda v živnostech. Týká se vás?

Lupa.cz: Zaplatíme ti, když ti seženeme práci

Zaplatíme ti, když ti seženeme práci

DigiZone.cz: Konec geoblokace? Ani náhodou…

Konec geoblokace? Ani náhodou…

Lupa.cz: Kam si doma dáte internet věcí? Na polici?

Kam si doma dáte internet věcí? Na polici?

DigiZone.cz: DAB+ versus FM, ČRo a ČRa proti APSV

DAB+ versus FM, ČRo a ČRa proti APSV

Vitalia.cz: Tetanus v USA – i po odřeninách

Tetanus v USA – i po odřeninách

Vitalia.cz: Syndrom PC vidění: stačí dvě hodiny denně

Syndrom PC vidění: stačí dvě hodiny denně

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas