Hlavní navigace

Další triky kolem RPM

Leoš Literák

Minulé číslo "triků" se točilo okolo základních vlastností RPM. Dnes přejdeme k poněkud pokročilejším vlastnostem, které můžete potřebovat a podíváme se i na jiné nástroje pro správu balíčků.

Posledně jsem se podíval na základní vlastnosti RPM. Dnes přejdeme k poněkud pokročilejším vlastnostem, které můžete potřebovat a podíváme se i na jiné nástroje pro správu balíčků.

Ale nejdříve opět vyzvu Debianisty, ať napíší nějaký článek o správě balíčků pod jejich oblíbenou verzí Linuxu. Podle vyprávění Šneka má tato distribuce opravdu promyšlenou filozofii.

Jak už bylo zmíněno v diskusi k minulému článku, občas se přihodí, že instalace (upgrade) balíčku selže kvůli neuspokojeným závislostem (unsatisfied dependancies). Co můžeme v takové situaci udělat? Postup se pokusím vysvětlit na instalaci KDE 2.1, které je mimochodem opravdu skvělé. Stáhnete si nejdříve 60 MB dat :-( a přihlasíte se jako root. Začnete s prvním balíčkem. Ten vám vypíše hromadu chybných závislostí. Vyberete si první závislost a snažíte se ji splnit. A tak začnete instalovat požadovaný balíček. Ten však vyžaduje nějaký jiný balíček. Než najdete ten balíček, který se má instalovat jako úplně první, uběhne pět minut a vaše nervy začnou být poněkud povážlivě napnuty. A přitom úplně zbytečně. Pokud stáhnete program dodávaný ve více balíčcích, nejjednodušší je instalovat je všechny najednou: rpm -i *.rpm. Příkaz rpm si sestaví tabulku všech poskytovaných a požadovaných závislostí a nainstaluje si balíčky ve správném pořadí.

Jenže já mám minulou verzi KDE a rpm -U *rpm nepomohlo. Objevily se mi tu hlášení, že soubor /usr/share/doc/HTML/en/kppp/common z balíčku kdenetwork-2.1-0.6x.2 je v konfliktu se souborem z balíčku kdenetwork-ppp-2.0.1-1. Co to znamená? Že nainstalovaný balíček kdenetwork-ppp ve verzi 2.0.1 a právě instalovaný balíček kdenetwork obsahují soubor se stejným názvem. Problémem je, že balíčky se jmenují jinak, proto musíte tuto situaci vyřešit sami.

Jednou z možností je odinstalovat starší balíček pomocí rpm -e. Pak už nás tato chyba nebude otravovat. Jenže někdy to tak snadno nepůjde. Zvláště pokud ten starší balíček je nějaká knihovna, na které závisí spousta dalších aplikací. Pokud jste si jisti, že tento konflikt je chybou autora balíčku, která neovlivní chod systému (dokumentace, soubor je v jiném balíčku), můžete použít volbu --replacefiles: rpm -U --replacefiles *rpm.

Konflikty jsme již vyřešili, ale máme tu jiný problém: nahráním nové verze přestanou platit nějaké závislosti. Například v původní verzi jsme nainstalovali i devel balíčky, kdežto dneska jsme je nestahovali. A devel balíčky občas vyžadují přesnou verzi. Například kdelibs-devel-2.0.1  vyžaduje kdelibs-2.0.1, které chcete upgradovat na kdelibs-2.1. Co teď? Opět se můžete rozhodnout odinstalovat balíčky, které dělají problém, v tomto případě kdelibs-devel-2.0.1. Jenže pak nebudete moci kompilovat prográmky pro KDE ze zdrojových kódů.

Já si tipnu, že starší verze vývojových knihoven budou fungovat i s novějšími základními knihovnami, a tak to risknu a chci mít nové KDE a starší devel balíky. V takovém případě se mi bude hodit volba –nodeps, která vypne kontrolu závislostí. Takže aktuální příkaz vypadá takto: rpm -U --replacefiles --nodeps *rpm. Tímto způsobem se zároveň vyřešila i poslední potíž – chybějící knihovna LDAP. Pokud totiž balíček vyžaduje jiný balíček a vy si myslíte, že zbytečně nebo tuto vlastnost nebudete používat (k čemu knihovnu libungif, když ze zásady používáte PNG?), zkuste do příkazu přidat –nodeps.

K příkazu rpm mám už jen poslední trik: pokud chcete zjistit, do kterého balíčku patří některý soubor na disku, použijte rpm -qf. Například rpm -qf /etc/inputrc zjistí, že tento soubor je součástí balíčku setup-2.1.8-1. Více informací najdete v manuálové stránce příkazu rpm nebo v článcích Michala Krause Správa balíčků s RPM, část první a Správa balíčků s RPM, část druhá.

U textového režimu dneska zůstaneme. Ne každý preferuje používání příkazové řádky. Mnohdy se podstatně lépe pracuje s interaktivně ovládaným programem. Zvláště pokud umožňuje přehledně zobrazovat instalované balíčky a procházet jednotlivými kategoriemi. Přesně toto umožňuje Purp. Jeho autor, Anders Karlsson, se nechal inspirovat rozhraním Midnight Commanderu a vytvořil program pro textovou konzoli na správu balíčků.

Purp

Purp umožňuje velice snadnou navigaci instalovanými balíčky, které se vám zobrazí v jednom panelu. Druhý panel obsahuje nenainstalované balíčky z aktuálního adresáře. Pomocí klávesových zkratek můžete snadno získat popis libovolného balíčku a seznam jeho souborů. Dále můžete balíčky instalovat, upgradovat či mazat. K dispozici je i (nepříliš propracované) vyhledávání.

Přestože je Purp velmi light-weight, obsahuje vše, co obvykle potřebujete. A díky tomu, že jej můžete spustit i v textového režimu, hodí se i na správu serverů, které nemají nainstalované grafické prostředí. A nebo pro vzdálenou správu přes ssh.

To be continued…

Našli jste v článku chybu?