Určite veľa z vás pozná systémy aptitude, emerge, alebo portage známe z Debian Linuxu, Gentoo, alebo FreeBSD. Jedná sa o systémy, ktoré zvládnu inštaláciu, alebo upgrade balíkov priamo z online repozitárov na internete. Slackware je nesporne obľúbenou distribúciou, a napriek jej veľkej rozšírenosti jej štandardný inštalačný systém pkgtool nemá schopnosti porovnateľné s aptitude, alebo emerge. Existuje však rozšírenie, ktoré sa volá Swaret. Pozrime sa naň bližšie...
Swaret dodáva inštalátoru podporu online repozitárov, cache balíkov, možnosť inštalácie zo zdrojových kódov, upgrade systému a v najnovšej verzii aj rollback balíkov. Dokáže riešiť závislosti balíkov a automaticky sťahovať knižnice, ktoré sú potrebné pre správny beh inštalovaných balíkov. V rámci počítačovej siete, kde je viacero počítačov s nainštalovaným Slackware Linuxom, je možné premeniť jeden počítač so Swaretom na lokálny repozitár a ostatné počítače upgradovať iba z tohto repozitára, čím sa výrazne znižuje zaťaženie siete. Takisto je možné pomocou Swaret-u upgradovať verzie Slackware na vyššie.
Inštalácia
Swaret sa dodáva ako bežný .tgz balík pre Slackware. Je kompatibilný so Slackware 8.2 a jeho novšími verziami. Pre jeho beh je potrebný nástroj bc, ktorý je možné nájsť na inštalačnom CD Slackware Linuxu č. 1 (ak už nie je štandardne nainštalovaný). Balík sa dá stiahnuť zo stránky http://swaret.sourcefoge.net, k dispozícii je stabilná verzia 1.6.2, ktorá postačuje svojimi funkciami. Po stiahnutí sa balík nachádza v súbore swaret-1.6.2-noarch-1.tgz.tar
. Tento súbor treba premenovať na swaret-1.6.2-noarch-1.tgz
, aby bol automaticky inštalovateľný pomocou pkgtool-u. Potom je možné ho nainštalovať pomocou príkazu (pod rootom):
# installpkg swaret-1.6.2-noarch-1.tgz
Tento krok nainštaluje swaret a jeho konfiguračné súbory do systému. Na záver je potrebné skopírovať štandardný konfiguračný súbor na miesto, kam patrí:
# cp /etc/swaret.conf.new /etc/swaret.conf
Týmto je inštalácia swaretu hotová.
Začíname "swaretiť"
Po inštalácii Swaretu je nutné previesť ešte niekoľko jednoduchých krokov, než je možné Swaret plno využiť. Prvým krokom je nastavenie verzie, ktorú máme na počítači, resp. hodláme využiť (možnosť upgrade verzie bude popísana nižšie). V prípade, že máme Slackware 10.2, spustíme:
# swaret --set VERSION=10.2
Analogicky postupujeme pre ostatné verzie. V prípade, že žijeme na nestabilnej vetve (tzv. currentoch), ako verziu udáme:
# swaret --set VERSION=current
Po nastavení verzie operačného systému je nutné aktualizovať zoznam balíčkov. To je možné spraviť pomocou:
# swaret --update
Aktualizáciu zoznamu balíčkov je nutné vykonávať ručne vždy po istom čase, pretože Swaret nehľadá pri požiadavke na inštaláciu balík na internete, ale v lokálnom zozname balíkov, čím vyrazne zrýchľuje inštalačný proces na pomalších linkách a znižuje zaťaženie siete. Pri aktualizácii zoznamu balíčkov sa z internetu stiahnu zoznamy balíčkov, ich kontrolných súčtov a changelog, pomocou ktorého sa hľadaju updaty. Túto úlohu je dobré naplánovať pomocou cronu napríklad raz týždenne, poprípade zriedkavejšie podľa toho, ako často sa repozitár aktualizuje.
Automatická akutalizácia systému
Ak máme systém Swaret nastavený na prácu, môžeme pristúpiť k prvému kroku, ktorým by mala byť aktualizácia systému. Aj keď Slackware Linux vychádza približne raz za pol roka, často sa objavujú chyby, kvôli ktorým je nutné softvér aktualizovať, ináč sa vystavujeme bezpečnostným rizikám. Aktualizácia sa dá spustiť pomocou:
# swaret --upgrade
Swaret začne prechádzať zoznam inštalovaných balíkov a hľadať novšie verzie v zozname balíkov v repozitári. Preto je vždy nutné mať aktuálne zoznamy balíkov v repozitári. Po zistení dostupných aktualizácii Swaret vyzve k potvrdeniu inštalácie každého jednotlivého balíka, poprípade automatickej inštalácii všetkých nájdených aktualizácii. V prípade, že sme si istí, že chceme inštalovať všetky dostupné aktualizácie, môžeme rovno spustiť:
# swaret --upgrade -a
čo spôsobí, že Swaret sa nebude pýtať na potvrdenie inštalácie balíkov, ale automaticky nainštaluje všetky dostupné aktualizácie. Po stiahnutí balíkov aktualizácii sa skontrolujú ich kontrolné súčty a ak je všetko v poriadku, balíky sa nainštalujú. Keď je inštalácia dokončená, Swaret začne zisťovať závislosti. Po vyriešení všetkých závislostí je aktualizácia dokončená. Nie je nutné spúšťať ldconfig
, ani žiadne ďalšie nástroje, všetko je nastavené.
Riešenie závislostí
Swaret je rozšírením inštalačného systému pkgtool štandardne používaného v Slackware Linuxe, ktorý sám o sebe riešenie závislosti nepodporuje, čo niektorí jeho používatelia berú ako nevýhodu a niektorí ako výhodu. Faktom však je, že pri riešení závislostí sa Swaret na samotné balíčky spoliehať nemôže, preto využíva svojský postup: pri inštalácii balíku v ňom hľadá všetky spustiteľné súbory; u týchto súborov potom zisťuje pomocou nástroja ldd, či majú k dispozícii všetky knižnice, s ktorými sú zlinkované. V prípade, že všetky knižnice dostupné nie sú, Swaret zistí, v ktorom balíku sa daná knižnica nachádza a ak je daný balík nájdený a dostupný v repozitári, tak ho stiahne a nainštaluje. V prípade, že je závislosť na inej báze, než vyžadovaná dynamická knižnica, Swaret túto závislosť nemusí rozpoznať a vyriešiť.
Inštalácia balíkov
Ak máme systém aktualizovaný a ešte beží :), môžeme pristúpiť k inštalovaniu obľúbených programov, ktoré nám chýbajú. Veľmi často požadovaným programom je k3b. K3b sa nachádza v oficiálnych repozitároch, ale na inštalačných CD sa nenachádza. Je ho však možné za pár sekúnd nainštalovať pomocou Swaretu, napríklad takto:
# swaret --install k3b
To spôsobí nainštalovanie všetkých balíkov, ktoré majú v názve, alebo popise reťazec k3b. Swaret vypíše zoznam balíkov, ktoré vyhovujú zadanému filtru a vyzve k potvrdeniu ich inštalácie. Ak sme si istí, že chceme všetky balíky inštalovať, môžeme spustiť inštaláciu pomocou
# swaret --install k3b -a
V tomto prípade bude potvrdzovanie balíkov vynechané a všetky nájdene balíky sa automaticky nainštalujú.
Upgrade balíkov
Voľbu --upgrade
je možné okrem upgrade celého systému využiť aj na upgrade iba niektorého balíka. Dosiahneme to pomocou príkazu
# swaret --upgrade nazov_balika
Táto voľba prevedie aktualizáciu balíka na novšiu verziu. Je výhodnejšie používať voľbu --upgrade
, než voľbu --install
pri inštalácii vyšších verzií, nakoľko po voľbe --install
ostane v systéme zmienka o nainštalovanej staršej verzii, čo môže neskôr spôsobiť inkonzistenciu celého inštalačného systému a nutnosť reinštalovať celý systém.
Prechod na vyššiu verziu Slackware
Pri vydaní novej verzie Slackware Linuxu nie je nutné starý Slackware rušiť a inštalovať nový čistý Linux z CD. Je možné využiť Swaret k upgradu celého systému. Postup upgradu bude demonštrovaný na prechode z verzie 10.1 na 10.2:
- nastavíme novú verziu, na ktorú by sme chceli aktualizovať náš systém
# swaret --set VERSION=10.2
- zaktualizujeme zoznam balíkov
# swaret --update
- vykonáme upgrade celého systému
# swaret --upgrade
- hotovo :)
Poznámka: z dôvodu extrémnej chúlostivosti a možných problémov sú z aktualizácie vylúčené niektoré základné balíky, ako napríklad jadro, moduly, alsa, hlavné knižnice a podobne. Tieto je nutné upgradovať najlepšie ručne z jednopoužívateľského režimu, alebo pomocou bootovateľného CD.
Living on the edge
V prípade, že chceme vyskúšať, čo nové sa pripravuje v Slackware Linuxe, alebo sa zdajú stabilné verzie príliš staré, je nutné nastaviť verziu Linuxu na current takto:
# swaret --set VERSION=current
To spôsobí, že sa budú hľadať aj nestabilné balíčky a iné vychytávky, ktoré v aktuálnej verzii nie su. Môže to však priniesť problémy so stabilitou a čiastočne aj funkčnostou celého systému.
Inštalácia zo zdrojových kódov, alebo budujeme "slantoo"
Swaret disponuje aj schopnosťou inštalovať balíčky zo zdrojových kódov. Túto vlastnosť spomeniem len okrajovo, nakoľko v oficiálnej dokumentácii k verzii 1.6.2 sa píše, že vlastnosť je experimentálna a ani mne sa pomocou Swaretu nepodarilo nainštalovať k3b zo zdrojových kódov.
Balíček zo zdrojových kódov je možné nainštalovať voľbou:
# swaret --compile nazov_balika
Voľba by mala byť dostupná pre všetky balíky šírené pod licenciou GNU General Public License, nakoľko tieto balíky obsahujú v repozitároch aj na inštalačných médiach zdrojové kódy. Swaret však nezvláda používateľské nastavenia v ./configure skriptoch, ani niektoré ďalšie systémy, ako je m4, čiže je možné, že bude úspešnosť inštalácie zo zdrojových kódov minimálna, alebo žiadna. V tejto oblasti má ešte čo Swaret doháňať za emerge a portage.
Používame viacero repozitárov
Časom zistíme, že štandardný repozitár s balíkmi pre Swaret neobsahuje dostatočné množstvo softvéru a hodí sa skôr iba ako aktualizačný repozitár. Niekto by mohol tento fakt pripisovať tomu, že pre Slackware neexistuju žiadne balíky, alebo že Swaret nevie operovať so slackwarovskými balíkmi. Obe tvrdenia sú nepravdivé, nakoľko Swaret používa pri samotnej inštalácii pkgtool, preto balíky v Swaret repozitároch sú v takom istom formáte ako oficiálne balíky, dokonca Swaret dokáže pracovať aj s oficialnymi mirrormi repozitárov. To, že Swaret ponúkne v štandardnej inštalácii minimálne množstvo balíkov je spôsobené tým, že po inštalácii je v ňom nadefinovaných len niekoľko oficiálnych repozitárov, resp. mirrorov originálneho ftp. Tieto oficiálne repozitáre obsahujú len oficiálne skompilované balíky pre Slackware i486. Ak chceme používať neoficiálne repozitáre, musíme si ich do Swaretu pridať. Definícia repozitárov je uložená v konfiguračnom súbore Swaretu, ktorý je spracovávaný pri každom spustení Swaretu. Swaret rozoznáva dva druhy serverov:
- Mirrory oficiálnych FTP Slackware Linuxu. Tieto servery sú presnými kópiami oficiálneho servera a používajú sa k rozloženiu záťaže pri sťahovaní updatov. Pre naše podmienky vyhovuju napríklad ftp://ftp.linux.cz, alebo ftp://x86.sk.
- Repozitáre s neoficiálnymi balíkmi pre Slackware Linux. Takýchto repozitárov existuje väčšie množstvo. Obvykle sa dajú nájsť na googli pomocou reťazca REPOS_ROOT.
Mirrory a repozitáre sa v Swarete definujú v konfiguračnom súbore pomocou direktívy ROOT (pre mirrory oficiálnych ftp) a REPOS_ROOT (pre repozitáre s neoficialnými balikmi). Formát direktívy ROOT je:
ROOT=protokol:URL
teda napríklad:
ROOT=ftp://ftp.linux.cz/pub/linux/slackware/slackware-$VERSION
Pre REPOS_ROOT platí nasledovný formát:
REPOS_ROOT=nazov_repozitara%protokol:URL
Pričom nazov_repozitara musí byť jednoslovný (teda bez medzier a iných whitespace znakov). Mal by vyjadrovať pomenovanie repozitára, aby počas inštalácie bolo možné určiť, z ktorého repozitára sa inštaluje. Pre protokol a URL platia rovnaké pravidlá ako v prípade direktívy ROOT. Príklad:
REPOS_ROOT=Inode_Packages%ftp://linuxpackages.inode.at/Slackware-10.2
Po úspešnom zadaní repozitára do konfiguračného súboru je možné konfiguráciu vyskušať tak, že sa pokúsime zaktualizovať zoznam balíčkov v jednotlivých repozitároch:
# swaret --update
Ak neuvidíme žiadnu chybu, repozitár máme úspešne nakonfigurovaný a môžeme ho začať využívať. Ak chceme inštalovať balík, nie je nutné špecifikovať, z ktorého repozitára ho chceme inštalovať, Swaret automaticky prehľadá všetky dostupné repozitáre a pokúsi sa balík nájsť.
V prípade pridania ďalšieho repozitára je nutné dať si pozor na to, že balíky môžu mať upgrady aj v neoficiálnych repozitároch, čo by mohlo viesť k nainštalovaniu nefunkčného, alebo neoficiálneho balíka miesto štandardného systémového balíka.
Záver
Aj keď Swaret má ešte pred sebou dlhú cestu k tomu, aby sa stal vševediacim inštalačným nástrojom pre Slackware a nie je zaradený do oficiálnej distribúcie Slackware Linuxu, je to užitočný pomocník so širokou paletou možností, ktorá sa časom rozširuje. Pribúdajú nové repozitáre s balíkmi, nové oficiálne balíky a systém sa tak stáva čím ďalej produktívnejší. Fakt, že sa jedná o konzolový nástroj ho predurčuje k vytváraniu systémov automatickej inštalácie a nástroj swaret-tools ho predurčuje k vytváraniu lokálnych repozitárov napríklad pre firemnú sieť. Prajem veľa úspechov pri swaretení :).
Seriál
vyzrieť -zreje -zrejú dok.
1. dokonale, úplne dozrieť: ovocie musí vyzrieť
2. kniž. vyspieť: vyzrieť na ženu, vyzrel na veľkého umelca;
nedok. vyzrievať
:)