Rpm & Apt-rpm & Yum & Up2Date
V diskusi pod předchozími články (a na mém soukromém e-mailu) se objevily dotazy na vzájemný vztah programů Rpm & Apt-rpm & Yum& Up2Date, a zda je možné je používat souběžně. Tohle téma by vlastně mělo být na samém začátku našeho seriálu, ale sami jste se přesvědčili, že Apt/Synaptic je možné začít používat i bez hlubších teoretických znalostí. Tato kapitola nechť je věnována úplným začátečníkům – všichni jsme jimi jednou byli.
Stručně – Yum, Apt i Up2date lze bezpečně používat dohromady. Pokud se podíváte do diskusních skupin k jednotlivým repozitářům, dostaneme se k nim v dalších dílech, uvidíte, že je lidé dohromady používají. To, co nainstalujete pomocí Apt, uvidíte v Up2date i Yumu a obráceně.
Lze je používat dohromady, protože jsou všechny postaveny nad jedním manažerem balíčků – u Fedory je to RPM (Redhat Package Manager) – nad jednou centrální databází balíčků. Tato databáze je z rodiny souborových databází a fyzicky je uložena v souborech v adresáři /var/lib/rpm. Více na [RPM]. Tato databáze sice nepatří k nejrychlejším, ale umožňuje transakční zpracování. Pokud instalujete více balíčků najednou a instalace zhavaruje na samém konci u posledního balíčku, RPM je schopný vrátit vše do původního stavu.
Apt, Yum i Up2date jsou v podstatě nadstavbou, vyšší vrstvou systému, která pro základní operace s balíčky důsledně volá nižší vrstvu – balíčkového managera. Technicky je to řešeno voláním knihovny librpm.
RPM se stará o instalaci, odinstalování, update konkrétního balíčku, poskytuje seznam nainstalovaného SW, spravuje soubory databáze, vyhledává. Tady jeho schopnosti končí, jsou omezeny na již nainstalované balíčky a na vlastní RPM soubor. Při instalaci sice pozná, že například nelze nainstalovat, protože chybí závislý balíček nebo konkrétní knihovna, to zjistí dotazem do lokální databáze, ale už neví, kde a jak takový balíček získat, nenabízí řešení. A právě o tohle se starají systémy jako Apt a Yum.
Apt i Yum se vyznají v síťové komunikaci, mají seznam zdrojů dostupných na Internetu, lokální síti či na výměnném médiu, dokážou z nich stáhnout seznam nabízených balíčků, dopátrat se, do kterého balíčku patří chybějící knihovna, ten pak nabídnou ke stažení, a to nejlépe v nejnovější verzi. Dokážou zjistit, co na vašem systému zastaralo a co by bylo možné upgradovat, a pokud si budete přát, udělají to. Pro vlastní instalaci a vyhledávání v lokální databázi využívají služeb balíčkového manažera – rpm u Fedory,dpkg u Debianu.
Fajn, takže Yum a Apt dělají to samé, velmi podobně se ovládají, lze jimi nainstalovat stejné balíčky. Takže v čem se tedy liší!?
Liší se asi tak jako Mozilla od Opery či Konqueroru ;-)
Apt má již dlouhou dobu uživatelsky přívětivý GUI frontend – Synaptic, což potěší hlavně nováčky. Je z podobných systémů asi nejstarší, vznikl a rozšířil se z distribuce Debian. Je to jediný systém, který se rozšířil za hranice své distribuce. Už to něco napovídá o jeho kvalitách.
Lze jej stáhnout ve verzích pro Fedoru, „komerční“ RedHat, SuSE, Mandrake, Debianu, Knoppixu, PCLinux, dokonce je i verze pro Slackware – neříkám, že pro něj existují i nějaké repozitáře. Verze pro Rpm vznikla původně původně pro (u nás exotickou) brazilskou distribuci Connectiva Linux. Je napsaný v C++ a rozšiřitelný pomocí skriptovacího jazyka LUA (taky exotika, alespoň pro mě), ale existuje i binding pro Python.
Existují i alternativní frontendy: textově dialogový frontend Aptitude nebo speciální apt-shell. S Apt se vám bude lehčeji přecházet mezi distribucemi ;-)
Projekt Yum si zase vyhlédl RedHat a zařadil ho přímo na instalační CD. Od začátku byl šit na míru Fedoře a nevím o tom, že by byl dostupný ve verzi pro jinou distribuci. Je napsán v Pythonu, takže je snadno rozšiřitelný. Řada uživatelů si stěžuje, že je pomalejší. Yum dlouho neměl vlastní GUI frontend, dodnes se setkáte s návody výhradně pro příkazovou řádku, ale to nedávno změnil projekt Gyum (nebo také Yumi či YUMGUI)
Pro uživatele je asi nejviditelnějším rozdílem v používání fakt, že Yum načítá seznam dostupných balíčků automaticky, což dost zpomaluje, v Apt/Synapticu naopak musíte načítání zavolat explicitně, na což začátečníci rádi zapomínají. Automatické chování Yumu lze potlačit parametricky.
Zajímavou diskusi, kde se rozebírají technické rozdíly, najdeme například na tomto mail-listu [MP1] nebo zde [GN1].
A co Up2date? Tady už najdeme rozdílů více. Up2date měl odpočátku skromnější záměr poskytovat pouze komfortní přístup k update balíčků, tak, jak je sám poskytoval uživatelům RedHat (pro platící uživatele přinášel nějaké výhody). Novější verze Up2date umožňují stahovat balíčky z Yum i Apt repozitářů. Na množství funkcí je ale podstatně chudší. Zdá se mi, že RedHat plánuje postupnou integraci Yum s Up2Date.
Jak yum a apt komunikují se servery?
Jak jsem již psal, výhradně výměnou souborů přes HTTP a (případně) FTP. Příkaz apt-get update, v Synapticu tlačítko „Reload“, vám stáhne soubory s metainformacemi o všech dostupných balíčcích. Tento soubor s metainformacemi musí mít předepsané jméno, musí být na domluveném místě, dostupný přes HTTP nebo FTP a musí mít předepsaný (binární) formát. Obsahuje jméno balíčku, verzi, krátký popis, seznam závislostí vyžadovaných i poskytovaných.
Apt tedy stáhne z Internetu soubory s metainformacemi pro všechny repozitáře zadané v konfiguračním souboru sources.list, od Rpm si zjistí seznam již nainstalovaných balíčků a jejich verzí a z toho všeho si v paměti zrekonstruuje celou sít vztahů. Tato pavučina by měla být konzistentní, všechny závislosti uspokojitelné. O zajištění tohoto stavu se starají správci repozitářů. Pokud existuje od jednoho balíčku více verzí, což běžná situace, pracuje Apt přednostně s balíčkem, který rozpozná jako nejnovější (s přihlédnutím k pinování).
Pak zadáte install nějakého vytouženého balíčku, Apt prozkoumá, zda ho už nemáte nainstalovaný, pokud ne, podívá se do „sítě“, jestli vám neschází nějaké závislosti, z toho sestaví seznam, co je potřeba stáhnout a odkud je to možné stáhnout, vše pokud možno v nejnovějších verzích, a pokud dostane svolení, spustí se dowload. Doběhne-li celý a dobře, předá Apt řízení Rpm, které provede vlastní instalaci a pak jen oznámí výsledek uživateli.
Synaptic je jen grafická nadstavba nad Apt, další vrstva systému. Umožňuje komfortnější ovládání Apt, zobrazí instalované verze a dostupné verze pro snadné srovnání, ruční výběr verze místo doporučené nejnovější, nabídne seznam novinek k update. Podobně jako Aptitude nebo Gyum.
Závěr
V příštím dílu se podíváme blíže na strukturu adresářů a souborů v repozitářích.
Zdroje
[GN1] článek od Gustavo Niemeyera (autor portu Apt pro Rpm) na LWN.net o AptRmp, zajímavá diskuse. V diskusi najdete také několik srovnání Apt versus Yum.
[GN2] ukázka apt-shellu ve formě tutorialu, opět od Gustavo Niemeyera
[ML1] další zajímavá debata o technických rozdílech Apt a Yum proběhla na oficiálním mail-listu AptRpm, prosinec 2003
[RPM] www.rpm.org, oficiální stránky projektu, jsou orientovány spíše na vývojáře než na koncového uživatele, je tam například hezký tutoriál ke knihovně librpm, třeba kdybyste si chtěli napsat vlastní nadstavbu :-)
[RA1] Roberto Alsina – Článek o APT, jsou tam zmiňovány repozitáře jako ATRpms, FreshRPMS a KDE-RedHat na pycs.net. Trochu vnáší zmatek do terminologie, sekcím říká repozitáře.
[HP-AR] homepage AptRpm
[HP-S] Synaptic homepage
[HP-Y] homepage Yum(Yellow dog Updater, Modified)
[HP-Yi] homepage Gyum – GUI frontend pro Yum, alias YUMGUI, alias Yumi.
[CHT] stručný článekGyumu od Thomase Chunga na Fedoranews.org
[HP-Ap] homepage Aptitude
[JO1] článek o Synapticu na Debianu na DebianUniverse.com od Jonathana Oxera
[ML-Ar] apt-rpm – oficiální mail-list projektu apt-rpm
[ML-S] vývojářský mail-list Synapticu, jiný než vývojářský jsem nenalezl
man:/rpm
man:/apt-get
man:/yum