Swaret (3) - porovnanie s alternatívou a záver

01.05.2006 18:51 | Články | Eduard Drusa

Keďže som sa rozhodol tretí diel seriálu spracovať s ohľadom na vaše pripomienky, bude tento diel venovaný najmä porovnaniu systému Swaret a alternatívneho systému Slapt-get. Pozriem sa na niekoľko kladov a záporov oboch systémov a nakoniec poviem pár slov o betaverzii noveho Swaretu, ktorá sa pomaly dostáva do stabilného štádia.

Nástroj Slapt-get plní v zásade rovnakú funkciu, ako nástroj Swaret. U oboch systémov je cieľom sprístupniť vzdialené repozitáre balíkov na jednoduchú inštaláciu, ktorú je možné automatizovať. Oba systémy sa snažia v podstate implementovať funkcionalitu systému apt-get z Debian GNU/Linux. Existuje ale pár rozdielov, ktoré môžu rozhodnúť v prospech jedného, alebo druhého.

1. Práca s verziami

V tomto prípade sa nejedná o prácu s verziami balíkov, ale o prácu s verziami operačného systému. Je dosť bežným javom, že na jednom mirrore je súčasne k dispozícii repozitár balíkov pre niekoľko verzií Slackware Linuxu, napríklad 10.0, 10.1, 10.2 a current. V prípade systému Swaret existuje premenná VERSION, ktorá umožňuje pohodlnú zmenu verzie systému v prípade, že sme tento upgradovali pomocou jeho inštalačných CD, alebo sa na to chystáme pomocou Swaretu samotného. Funkčnosť tejto premennej je podmienená správnym nastavením cesty k repozitáru v konfiguračnom súbore tak, aby v ceste táto premenná figurovala. Konkrétne prípady možno vidieť v štandardnom konfiguračnom súbore. V prípade Slapt-get takáto premenná interne neexistuje a je nutné v konfiguračnom súbore zmeniť cestu k repozitáru, aby systém pristupoval k tým správnym balíkom pre aktuálnu verziu, alebo kvôli updatu. V oboch prípadoch je nutné po vykonaní zmeny verzie aktualizovať zoznam balíkov.

2. Upgrade operačného systému na vyššiu verziu

Túto funkciu zvládaju oba systémy. Rozdiel je len v tom, ako sa u jednotlivých systémov spúšťa. V Slapt-get existuje voľba dist-upgrade, ktorá spustí proces aktualizácie, Swaret vykoná upgrade na novú verziu automaticky, ak sa spustí upgrade systému po nastavení novej verzie systému. Slapt-get, ako aj Swaret obsahujú zoznam balíkov, ktoré su za všetkých okolností vynechané z aktualizačného procesu (aby nedošlo k náhodnému znefunkčneniu systému), preto je nutné previesť ručnú aktualizáciu týchto balíkov. A to najlepšie tak, že je počítač spustený z bootovateľného CD. To platí pre oba systémy, líšiť sa môže len počet a druh balíkov, ktorých sa výluka týka.

3. Riešenie závislostí

Pôvodný balíčkovací systém Slackware nerieši závislosti vôbec. Slapt-get aj Swaret prinášajú možnosť zisťovať závislosti balíkov. Zatiaľ čo Swaret používa k zisťovaniu závislostí utilitu ldd, ktorá vie určiť, ktoré knižnice chýbajú danej aplikácii, Slapt-get zavádza doplnkové metadáta v súbore balíka, pomocou ktorých dokáže určiť nielen to, ktoré balíky sú potrebné pre korektný beh aplikácie, ale napríklad aj to, s ktorými balíkmi ma tento balík konflikty. Každý zo systémov má svoje výhody aj nevýhody. V prípade balíkov, ktoré obsahujú iba binárne súbory a žiadne utility napísané v niektorom zo skriptovacích jazykov, sa javí ako lepší systém dynamického zisťovania závislostí, pretože dokáže zistiť reálne závislosti na knižniciach. Akonáhle je závislosť balíka iného charakteru, než potrebná knižnica, tento systém prestáva fungovať. Typickým príkladom by mohli byť manuálové stránky. Program man pre svoj korektný beh potrebuje balík man-pages. Na tento fakt ale utilita ldd nedokáže upozorniť. Iným príkladom by mohli byť utility, ktoré sú napísané v Perle, alebo inom skriptovacom jazyku, kedy je tiež ldd neúčinný. Na druhej strane, metadata, ktoré sú pridané do súboru balíka, majú niekoľko nedostatkov, medzi ktorými hlavným problémom je to, že v oficiálných balíkoch pre Slackware Linux sa tieto metadata nenachádzajú, teda Slapt-get nebude schopný riešiť závislosti týchto balíkov. Rovnako je problémom aj to, že nie každý neoficiálny balík obsahuje tieto informácie, keďže nie sú nijako štandardizované.

Ak by však niekomu chýbal systém zisťovania závislostí pomocou utility ldd, existuje skript, ktorý je wrapperom pre systém Slapt-get a doplní mu funkcionalitu zisťovania závislostí a automatického inštalovania balíkov, ktoré obsahujú knižnice potrebné pre beh balíka.

4. Spôsob inštalácie balíkov

V tomto ohľade sú oba systémy uplne rovnaké. Slapt-get, ako aj Swaret sú len rozšírením inštalačného systému Slackware - pkgtool, preto oba systémy vyžadujú prítomnosť tohto systému v inštalácii a využívaju ho rovnako.

5. Využívanie viacerých konfiguračných súborov

Slapt-get umožňuje využívať viacero konfiguračných súborov, napríklad automatickú aktualizáciu spúšťať z konfiguračného súboru pre lokálny firemný repozitár, inštaláciu z príkazového riadku pomocou iného konfiguračného súboru a podobne.

Túto nevýhodu je možné v Swarete eliminovať použitím krátkeho skriptu, ktorý pred spustením Swaretu nakopíruje správny konfiguračný súbor namiesto /etc/swaret.conf, poprípade zmení symbolický odkaz /etc/swaret.conf tak, aby ukazoval na želaný konfiguračný súbor.

6. Využívanie metabalíkov

Keďže Slapt-get umožňuje definovať v balíku jeho závislosti, môže existovať balík, ktorý obsahuje iba závislosti na iných balíkoch. Túto metódu je možné použiť pri inštalácii rozsiahlych programových balíkov, ako je napríklad KDE, alebo Gnome, kedy stačí vytvoriť metabalík kde, ktorý bude obsahovať závislosti na ostatných balíkoch KDE, ktoré sa automaticky nainštalujú. Je to jeden zo spôsobov, ako zjednodušiť inštaláciu balíkov.

Swaret túto funkciu nepodporuje, ani som nenašiel žiadny skript, ktorý by túto funkcionalitu pridával.

7. Podpora kompilácie balíkov zo zdrojových kódov namiesto inštalácie binárnych balíkov

Swaret disponuje funkciou kompilácie balíka, ktorá umožní balík namiesto jeho inštalácie v binárnej forme jeho kompiláciu zo zdrojových kódov. Táto funkcia nie je dotiahnutá tak ďaleko, ako systém portage, aby umožnila zmenu nastavení a podobne, ale dokáže poslúžiť, aj keď je v experimentálnom štádiu.

Slapt-get podobnú funkcionalitu priamo neponúka, avšak existuje wrapper, ktorý poskytuje čiastočnú náhradu tejto funkcie. Je možné kompilovať balíky nachádzajúce sa v archíve na linuxpackages.net.

8. Výber alternatívneho mirroru pre inštaláciu balíka

Existujú prípady, kedy je v konfiguračnom súbore systému nastavených viacero zdrojov toho istého balíka. Ak z nejakého dôvodu niektorý z mirrorov vypadne, je vhodné, aby sa balík automaticky stiahol a nainštaloval z ďalšieho dostupného mirroru. Túto funkciu bohužiaľ priamo nepodporuje ani jeden zo systémov. Čiastočnou náhradou v prípade Swaretu môže byť zapnutie voľby RANDOM, ktorá spôsobí, že Swaret si pri sťahovaní balíka vždy vyberie náhodný mirror z tých, ktoré sú v konfiguračnom súbore zadané. To je však nevýhodné v prípade, že máme mirrory v konfiguračnom súbore zotriedené podľa rýchlosti konektivity.

Slapt-get neposkytuje ani možnosť náhodného mirroru a je nutné poskytnúť alternatívny konfiguračný súbor, alebo ručne vybrať, o ktorý balík máme záujem (konkretizovať mirror).

9. Binárny systém vs. skript

Slapt-get je dodávaný ako binárny program, z čoho vyplýva, že jeho beh by mal byť rýchlejší a menej náročný na systémove prostriedky. Swaret je napísaný ako BASH skript, teda je relatívne pomalý, k svojmu behu vyžaduje množstvo externých nástrojov a konzumuje väčšie množstvo systémových prostriedkov.

Výhodou skriptu však je, že skúsený systémový administrátor ho môže relatívne jednoducho doplniť o ďalšiu funkcionalitu a v pomerne krátkom čase si ho prispôsobiť k obrazu svojmu. V prípade Slapt-get je nutné písanie wrapperov a tam, kde wrappery nepomôžu, je nutné zdĺhavé prepisovanie a kompilovanie, ktoré je v prípade programu v jazyku C nesporne časovo náročnejšie.

10. Spolupráca s lokálnymi repozitármi

Ako Slapt-get, tak Swaret dokážu pracovať s lokálnymi repozitármi vytvorenými pomocou nástroja Swaret-tool. Je však možné použiť aj skripty, ktoré boli napísané komunitou okolo Slapt-get a plnia v podstate rovnaký účel.

11. Existencia grafickej nadstavby

Slapt-get aj Swaret poskytujú grafickú nadstavbu. V prípade Swaretu sa jedná o Kswaret, v prípade Slapt-get sa jedná o Gslapt.

Ako vidieť, Swaret aj Slapt-get sú koncipované ako rozšírenia inštalačného systému Slackware Linuxu. Obe plnia primárne rolu sprístupnenia repozitárov na sieti. Každý zo systémov pridáva nejakú službu navyše (kompilácia balíkov a metabalíky). V oboch systémoch existujú funkcie, ktoré druhý nemá. Vzhľadom na to, že sú postavené na pkgtoole, sú si viacmenej rovnocenné a je iba na administrátorovi, ktorý z nich si vyberie.

Hoci je funkcia kompilácie balíkov v Swarete iba v štádiu experimentálnej implementácie, vo verzii 1.7.0 je táto funkcia vylepšená a pre bežné balíky, ktoré nevyžadujú autoconf a iné neštandardné nástroje pri kompilácii, funguje pomerne spoľahlivo.

Záver

Prístup k vzdialeným repozitárom dokáže významnou mierou urýchliť proces aktualizácie systému, ako aj zaviesť možnosť automatickej aktualizácie. Snažil som sa predstaviť jeden z podobných systémov pre Slackware Linux, ako aj priniesť pohľad na jeho alternatívy.

 

 

Seriál

 

 

    • . 02.05.2006 | 22:29
      Avatar .LUCAS. Slackware, Debian  Používateľ
      Vdaka. Slapt-get som zatial este neskusal, ale z clanku mi vyplyva ze swaret bude asi lepsi. Co sa tyka nadstavby Kswaret - ma niekolko nedostatkov a chybyciek a to menovite napr.: ak zvolite v menu polozku Install tak vypise vsetko vratane starsich verzii programov, ktore oznaci ako nenainstalovane, to by sice nebol problem (swaret takisto zobrazi aj starsie verzie) ale narozdiel od swaretu neinformuje o nainstalovanej novsej verzii a po potvrdenii instalacie \"čaruje\" bez toho aby informoval co robi - nakoniec nastastie zvoleny starsi program nenainstaloval. Jeden priklad nedostatocnosti kswaretu. Preto ak pouzivate Kswaret davajte si pozor na to co robite. Odporucam pracovat s \"cistym\" swaretom bez nejakych frontendov.
      • Re: . 03.05.2006 | 17:24
        Avatar ventYl 2 x Slackware  Používateľ
        yop yop, to je ale uz vada kswaretu ako takeho. swaret je primarne urceny na skriptovane, casovane a remote aktualizacie.