Hlavní navigace

Potrava pro vaši Fedoru - snadno a rychle (4)

6. 1. 2005
Doba čtení: 6 minut

Sdílet

V tomto dílu vysvětlím vztah mezi Rpm, Apt-rpm, Yumem a Up2Date a proč je bez obav můžeme používat dohromady, letmo srovnáme Apt a Yum a pak si popíšeme krok po kroku, jak probíhá běžná instalace uvnitř Apt, odkud a proč se co stahuje.

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.

AptYum 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

CS24_early

man:/apt-get

man:/yum

Byl pro vás článek přínosný?