Swaret (1) - ako vyzrieť na upgrade Slackware Linuxu

09.03.2006 23:02 | Články | Eduard Drusa
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:

  1. nastavíme novú verziu, na ktorú by sme chceli aktualizovať náš systém
    # swaret --set VERSION=10.2
  2. zaktualizujeme zoznam balíkov
    # swaret --update
  3. vykonáme upgrade celého systému
    # swaret --upgrade
  4. 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:

  1. 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.
  2. 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

    • ... 10.03.2006 | 04:51
      Drom   Návštevník
      Supr, o swaretu jsem toho moc nevedel, pac me Slackware vzdycky strasne matl :)
      • Re: ... 10.03.2006 | 09:35
        skywaker   Návštevník
        ja pouzivam slapt-get a graficku nadstavbu gslapt, ktora je podobna synapticu. inac swaret som este neskusal ale asi vyskusam. slapt-get funguje tak, ze potrebuje pre svoju cinnost subor PACKAGES.TXT, na ktory sa pripoji prikazom slapt-get --update a tym si urobi databazu balikov. lukas.
        • casino games 29.12.2006 | 02:43
          free online casino game   Návštevník
          • Príspevok bol vymazaný.
    • slackpkg 10.03.2006 | 10:21
      luzr   Návštevník
      Ja pouzivam slackpkg, ktory je podobne ako k3b dostupny v oficialnej extra vetve. Nekontroluje zavislosti a povazujem to oproti swaretu za vyhodu. Neoficialne repozitare - neviem, kto by si do systemu daval neoficialne baliky, ja urcite nie :) No a vytvaranie lokalnych mirrorov je lepsie robit rsyncom. Ale velmi dobry clanok - respect :)
      • Re: slackpkg 10.03.2006 | 13:12
        Avatar Eduard Drusa 2x Slackware  Používateľ
        Swaret sice zavislosti kontroluje, ale nie takym stylom, ako povedzme RPM v RedHate, ktory dost intenzivne protestuje v pripade, ze zavislost nenajde. Dokonca kontrolu zavislosti je mozne vypnut uplne. Ako som pisal v clanku, po case sa stane, ze oficialne repozitare neobsahuju to, co potrebujem. Jednou moznostou je manualne na internete najst a instalovat baliky, eventuelne kompilovat zo zdrojovych kodov. Druhou moznostou je pouzit niektory neoficialny repozitar, ktory uz takyto balik obsahuje a nainstalovat ho pomocou swaretu:)
        • Re: slackpkg 10.03.2006 | 18:38
          Avatar Lucas Lommer Debian stable, LinuxMint, Foresight  Používateľ
          No ja treba mam lokalni repozitar debianich baliku, kam si davam balicky, co jsem udelal. Takze moznost pouzit neoficialni zdroje se urcite hodi.
          -- Buduj vláčky, posílíš mír!
          • Re: slackpkg 17.10.2009 | 03:47
            pufnewsfiu   Návštevník
            sTS0eX wggirsixvzks, [url=http://crowvronqusl.com/]crowvronqusl[/url], [link=http://afsbrgxvhjmk.com/]afsbrgxvhjmk[/link], http://pyvpeqziqepz.com/
    • lokálne repository 10.03.2006 | 15:30
      rastos   Návštevník
      Je možné urobiť si pomocou swaret-u vlastné repository, ktoré by sa updatovalo z oficiálneho ftp repository? Lokálne repository by som potom chcel použiť na updatovanie ďalších strojov.
      • Re: lokálne repository 10.03.2006 | 16:04
        Avatar Eduard Drusa 2x Slackware  Používateľ
        Ano so Swaretom toto je mozne spravit, temu lokalnych repozitarov pomocou Swaretu sa chystam spracovat vo velmi blizkej dobe.
        • online poker tournament database 29.12.2006 | 02:43
          top 10 online gambling casino   Návštevník
          • Príspevok bol vymazaný.
    • swaret&slapt-get 10.03.2006 | 16:27
      online   Návštevník
      diky za objasneni, jeste bych si rad precetl podobny clanek o slapt-get , protoze anglicky to neprelouskam, tak pokud nekdo vi o nejakem odkazu ve "stredoevropskem-slovanskem" jazyce .. napiste....diky
      • free video poker games online 29.12.2006 | 02:43
        online poker tournament database   Návštevník
        • Príspevok bol vymazaný.
    • Priatelia... 11.03.2006 | 15:08
      SK   Návštevník
      Swaret (1) - ako vyzrieť na upgrade Slackware Linuxu ==================================== Ako vyzrieť na... To je bohemizmus AKO SVIŇA !!! Ono totiž nestačí vyznať iba v linuxe .................. Treba poznať aj svoju materinskú reč, ak nechcete ostať polovzdelancami
      • Re: Priatelia... 11.03.2006 | 15:19
        Avatar Ondrej Hučko Kubuntu  Administrátor
        Plne s Vami súhlasím, že je potrebné ovládať materinskú reč, ak nechceme ostať polovzdelancami. Ale nechtiac ste sa do tejto pozície vystavili Vy ;). Slovník slovenského jazyka:

        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ť
    • Thumbs up :) 12.03.2006 | 15:29
      Molnar   Návštevník
      Pekný článok, vďaka, teším sa na ďalšie časti.
      • party poker 29.12.2006 | 02:43
        free online casino game craps   Návštevník
        • Príspevok bol vymazaný.
    • rekcia 15.03.2006 | 16:17
      faster   Návštevník
      Neviem co sa vam nepaci na to vyraze. Podla mna je v poriadku. A gratulujem k clanku pan Drusa.
      • play free video poker 29.12.2006 | 02:43
        online poker tournament   Návštevník
        • Príspevok bol vymazaný.
    • super 17.03.2006 | 18:44
      Lukas   Návštevník
      Super clanok, len tak dalej. Trocha by ma zaujimali rozdieli medzi slapt-get a swaret, ich klady a zapory...
      • Re: super 23.03.2006 | 02:18
        MiSHiNo   Návštevník
        Z osobnej skusenosti. Rano som sa zobudil, siel som skontrolovat ako sa mi upgraduje system a mohol som rovno preinstalovat cely Slackware. Neviem co sa presne stalo, ale na vine bol urcite Swaret, ktory mi pekne domrdal cely sytem! Swaret som vtedy pouzil prvy a posledny krat. Slapt-get je v pohode, ziaden problem som snim nemal.
        • free internet casino 29.12.2006 | 02:44
          download casino online slots   Návštevník
          • Príspevok bol vymazaný.
    • Pekny clanok 30.03.2006 | 18:26
      Martin   Návštevník
      Dakujem.
      • casino slots 29.12.2006 | 02:43
        free internet casino   Návštevník
        • Príspevok bol vymazaný.
    • play free video poker 29.12.2006 | 02:43
      play video poker for free.com   Návštevník
      • Príspevok bol vymazaný.
    • Ine moznosti update - slackpkg 28.10.2007 | 16:51
      bry   Návštevník
      Slackware 12.0 > /extra/slackpkg/ - "slackpkg" nadstavba na pkgtool, schopna robit upgrade systemu.
      :)