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ľanejaký 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.
Ako resp. kde sa nastavuje ake vlastnosti ma ten balicek mat ? Lebo vlastne ak tomu spravne rozumiem, tak pomocou ABS si skompilujem balicek presne pre moj pc. A arch akoze uz vie aky mam pc??? alebo niekde sam nastavujem ze ktore veci povolit a ktore zakazat? Dakujem
Vubec jsem z clanku nepochopil, na co vlastne abs je, jak zjistim jaky pkgbuild muzu stahnout (kde najdu treba ten psi) je mi to stale jaksi nepochopitelne, zbytecne slozite
abs ma rovnaku adresarovu strukturu ako repozitare, ten psi sa nachadza v repo extra. samozrejme, ak nevies co sa kde nachadza, tak existuje napr. utilita find.
jinak bych poznamenal, ze standartne se pro sestavovani pouziva adresar ~/src, abs muze trochu zavadet :-P
$ mkdir -p ~/abs
a
$ cd ~/abs/psi
Skadiaľ sa v novovytvorenom adresari vzal podadresár psi s nejakým obsahom?
Štruktúra článku by možno potrebovala "vyladiť" všetko to pôsobí takým dojmom že "guláš", napríklad očíslované kroky alebo nadpisy častí a pod by určite pomohli...
takovy balicek je pak mozne nahrat do auru ( http://aur.archlinux.org/ ) a sdilet s ostatnimi uzivateli, kteri si ho muzou sestavit nainstalovat pomoci yaourt -S balicek AUR je tedy takova wiki na balicky, kam muze prispivat kazdy... (je tedy nutne si PKGBUILD pred instalaci precist).
moznost si takhle sestavit balicek ma kazda distribuce (vypliva to i z GPL), ale ArchLinux ma nejjednodussi postup pro vytvareni takovych balicku a balicek pro prumerny program udelate treba za 7 minut... (nebo i za min, pokud uz mate predpripraveny PKGBUILD, kde jenom prepisete par radek) Tesne je nasledovan BSD portama, ktery mi prisli trochu min prehledny...
To ma vyhodu v tom, ze uz nikdy nemusite delat "make install" a zajistit si tak, ze program uz nikdy poradne neodinstalujete... Kdyz je vsechno v balickovacim systemu, je vsechno prehledny a bezpecny...
pomozu mi baliky "base-devel" alebo "abs" tento problem napravit alebo musim aj tak stiahnut jadro a rozbalit ?
dakujem