V tomto článku sa pokúsim predstaviť jednu zaujímavú funkciu stále populárnejšej linuxovej distribúcie Arch Linux. Táto funkcia zbližuje Arch Linux a niektoré linuxové distribucie a BSD systémy, ktoré používajú systém portov pre kompiláciu a inštaláciu programov. Jej názov je Arch build system, skrátene ABS.
Systém portov a Arch Linux
Systém portov umožňuje používatelovi stiahnuť zdrojové súbory, rozbaliť ich, prípadne aj opatchovať,
následne ich skompilovať a vytvoriť z nich balíček pre ľubovoľný program, ktorý sa v systéme portov nachádza.
Takže výsledným produktom bude klasický inštalačný balíček pre Arch Linux. Celý systém sa skladá z
jednotlivých portov, čo je vlastne iba nejaký adresár na lokálnom počítači pomenovaný podľa názvu programu.
Každý takýto adresár obsahuje PKGBUILD a install súbor. PKGBUILD-om sa určuje odkiaľ sa zdrojové súbory
programu stiahnu, kde sa rozbalia a ako sa následne skompilujú. Install súbor, pomenovaný podľa šablóny
názov_programu.install, obsahuje definíciu funkcií, ktoré sa vykonajú pri inštalácii, upgrade a odinštalovaní výsledného balíčku. Port môže obsahovať aj jeden alebo viac súborov, ktoré majú v názve prefix patch. Takýto súbor obsahuje potom patche, ktoré sa aplikujú na rozbalený archív zdrojákov.
Ako príklad si môžeme zobrať napríklad IM klienta psi:
$ ls -l /var/abs/extra/psi
celkom 12
-rw-r--r-- 1 root root 662 jan 17 06:10 archlinux.patch
-rw-r--r-- 1 root root 730 jan 17 06:10 PKGBUILD
-rw-r--r-- 1 root root 146 jan 17 06:10 psi.install
V tomto prípade obsahuje port pre IM klienta psi povinný PKGBUILD s install súborom psi.install.
Taktiež obsahuje patch, ktorý upraví zdrojáky pre potreby samotej distribúcie Arch Linux.
Výhody systému portov v Archu
- možnosť prekompilovať program z ľubovoľného dôvodu
- vytvoriť si vlastný balíček programu zo zdrojákov, pre ktorý ešte neexistuje binárna verzia
- upraviť si zdrojáky podľa vlastných želaní
- prebuildovať celý systém, ktorý bude optimalizovaný pre váš počitač a tak nebudete musieť strácať
výkon, ktorý s binárnymi balíčkami strácate
- prekonfigurovať a prebuildovať si vlastné jadro
- prebuildovať moduly jadra
- jednoducho skompilovať a nainštalovať najnovšiu, staršiu, beta alebo vývojovú verziu Arch balíčka
iba upravením PKGBUILD-u.
Arch Build System (ABS)
Systém portov v Arch Linuxu zastrešuje
Arch Build System, ABS. ABS je séria nástrojov, ktoré sa používajú pri získavaní PKGBUILD súborov (a tým aj pre vytváranie portov), z ktorých sa potom vytvoria binárne balíčky pre Arch. Jednotlivé porty sa zvyčajne nachádzajú v adresáry
/var/abs, čo je tzv.
ABS strom.
Tento adresár má vlastnú štruktúru a to [repozitár]/[názov balíčka]. [repozitár] je presne to isté ako repozitár pre binárne verzie balíčkov. [názov balíčka] je názov aplikácie, pre ktorú si chceme vytvoriť vlastný balíček. Tak napríklad, PKGBUILD pre už spomínaný IM klient psi možno nájsť v adresáry:
/var/abs/extra/psi
Inštalácia ABS
Aby sme ABS mohli používať, tak si musíme nainštalovať aplikáciu
abs. To urobíme klasickým spôsobom:
# pacman -S abs
Pre vytváranie vlastných balíčkov je nutné ešte doinštalovať aj balíček
base-devel:
# pacman -S base-devel
Po nainštalovaní potrebných balíčkov môžeme ABS ešte nakonfigurovať. Nie je to ale potrebné, keďže
východisková konfigurácia je postačujúca. Konfiguračný súbor pre ABS je
/etc/abs.conf. Najzaujímavejšou
voľbou v tomto konfiguračnom súbore je určenie repozitárov, pre ktoré sa vytvorí systém portov:
REPOS=(core extra community testing)
Jednotlivé repozitáre sú oddelené medzerou. Ak pred názov repozitára pridáme výkričník (!), tak tento
repozitár sa bude ignorovať a nebude sa pre neho inštalovať systém portov, prípadne sa nebude synchronizovať
pri opätovnom spustení utility abs.
Tak napríklad, ak by sme chceli vynechať repozitár testing, tak premenná
REPOS v /etc/abs.conf by mala
takýto obsah:
REPOS=(core extra community !testing)
Pozor, ak si naozaj neželáme vytvárať systém portov (alebo jeho synchronizáciu) pre určitý repozitár, tak
nestací ho iba zmazať zo zoznamu, ale musíme ho nechať v zozname a pridať len výkričník. Inak abs bude aj
naďalej synchronizovať takýto neželaný repozitár.
Po prípadnej konfigurácii ABS systému, môžeme prejsť na samotnú prvotnú inicializáciu nášej lokálnej kópie
systemú portov, ABS stromu. To sa vykoná spustením utility
abs s administrátorskými (root) právami:
# abs
Tento príkaz vytvorý lokálnu kópiu ABS stromu v adresáry
/var/abs. Ak abs budeme spúšťať ešte raz,
tak už sa nebude celý strom sťahovať nanovo, ale iba sa zosynchronizuje a updatnú sa len tie subčasti stromu,
ktoré sa od posledného spustenia abs zmenili v centrálnom repozitáry.
Utilita abs má len tri parametre:
-h, --help zobrazí nápovedu pre túto utilitu
-V, --version zobrazi verziu abs
-t, --tarball s touto voľbou sa bude ABS strom synchronizovať pomocou tarballov z mirroru,
ktorý je definovaný pre pacman.
Potom, čo máme ABS strom, teda systém portov nainštalovaný, možeme ho začať používať. Pred samotným vytváraním
vlastných balíčkov pomocou ABS je vhodné ešte upraviť konfiguračný súbor pre
makepkg, čo je utilita pre
vytváranie balíčkov, viac
man 8 makepkg. Konfiguračný súbor sa nazýva
/etc/makepkg.conf. V tomto konfiguračnom
súbore si nastavíme potrebné optimalizačné flagy pre kompilátor, host systém, architektúru atď. Viac
man 5 makepkg.conf.
Používanie ABS
Samotné použitie ABS je veľmi jednoduché. Je vhodné si vytvoriť napríklad v domovskom adresáry bežného používateľa
nejaký pracovný adresár pre ABS. Je to z toho dôvodu, že akákoľvek práca v pôvodnom ABS strome vo
/var/abs sa zmaže
pri každej synchronizácii ABS stromu. Takže vytvorme si náš pracovný adresár:
$ mkdir -p ~/abs
Práca v našom domovskom adresáry má aj tú výhodu, že nemusíme pracovať ako root. Administrátorské právomoci budeme
potrebovať iba pri inštalácii už vytvoreného balíčka. Pre náš príklad práce s ABS si vytvoríme nový balíček pre
IM klienta psi. Predstavme si (čisto pre fakultatívne účely), že sa nám nepáči kontrola pravopisu v už nainštalovom
psi. Aby sme odstránili podporu pre kontrolu pravopisu, musíme upraviť súbor PKGBUILD v ~/abs/psi:
$ cd ~/abs/psi
$ vim PKGBUILD
Upravíme riadok, kde sa volá skript
configure a pridáme mu parameter
–disable-aspell:
./configure --prefix=/usr --disable-bundled-qca --disable-aspell || return 1
Pre vytváranie balíčkov sa používa utilita
makepkg, viac
man 8 makepkg. Takže ako ďaľši krok bude
spustenie tejto utility:
$ makepkg -s
Parameter
-s zabezpečí, že pri inštalácii novovytvoreného balíčka sa
pacman pokúsi doinštalovať aj zavíslosti,
na ktorých balíček závísi. Spustenie makepkg zabezpečí všetky kroky pre vytvorenie nového balíčka: stiahnutie
zdrojákov, kontrola ich checksumu, ich rozbalenie a prípadné aplikovanie patchov, kontrola závislostí pre
kompiláciu a závislostí pre naištalovanie balíčka, nasleduje kompilácia a vytvorenie binárnej verzie balíčka.
Ak všetko prebehne v poriadku, tak v aktuálnom adresáry sa objaví nový balíček. Jeho názov v tomto prípade
bude
psi-0.14-1-x86_64.pkg.tar.gz. Takýto balíček stačí už len nainštalovať pomocou pacmana:
# pacman -U psi-0.14-1-x86_64.pkg.tar.gz
Inštalujeme samozrejme s administrátorskými právami, teda pod root účtom.
Základnú prácu s ABS v Arch Linuxe máme predstavenú. Dúfam, že sa mi podarilo aspoň trochu ozrejmiť ABS a
jeho využitie. Prípadne námietky, návrhy, ďaľšie tipy prosím uveďte do kometárov.