Hlavní navigace

Správa balíčků s RPM

2. 3. 2000
Doba čtení: 4 minuty

Sdílet

Každá slušná distribuce nabízí mimo jiné také takzvaný "package management", neboli správu balíčků. Ta umožňuje relativně bezbolestně přidávat a odebírat programy, postará se o závislosti mezi balíčky a také může usnadnit kompilaci programů ze zdrojových kódů. Dnes se podíváme, jak používat RPM - základní kámen distribuce Red Hat, Mandrake, SuSE, Open Linux a dalších.

Možná si řeknete, proč se učit používat řádkovou utilitu rpm, když k ní existuje několik grafických rozhraní, jako například KPackage, GnoRPM a další. Jenže, co když třeba vyměníte grafickou kartu a nedostanete se do Xek, protože nebude mít nainstalovaný patřičný xserver? Nebo si pohrajete s jejich konfigurací tak, že už nenaběhnou? Nebo co když si prostě omylem odinstalujete Gtk+ nebo QT nebo kýho šlaka bude váš interface potřebovat k běhu? Zkrátka možností, jak si zavařit, je dost a pak se vám znalost použití klasického rpm bude hodit. Nehledě na to, že GUI většinou nepokrývá všechny funkce a vlastnosti, kterými řádková utilita disponuje.
  

INSTALACE BALÍČKŮ

Instalace balíčků je samozřejmě to, co po rpm požadujeme nejčastěji. Tuto oblast lze rozdělit na dvě části – instalaci nových programů a upgrade stávajících. Nové balíčky se instalují pomocí přepínače -i a upgrade se pak provádí buď parametrem -U (upgrade) nebo -F (freshen). Podstatné je, že -U nainstaluje i balíček, který zatím v systému nemáte (takže jej lze používat bez obav místo -i), zatímco -F jej přeskočí. To je praktické například když si stáhnete větší množství balíčků, ale chcete upgradovat jenom ty, co už instalované máte. Rpm umí instalovat i balíčky přímo přes FTP nebo HTTP protokol, takže je nemusíte ani před instalací či upgradem stahovat.

Příklady

Instalace balíčku:
rpm -i balicek-1.0–2.i386.rpm

Upgrade balíčku z anonymního FTP serveru:
rpm -U ftp://nekde­.cz/pub/RPMS/ba­licek-1.0–2.i386.rpm

Upgrade pouze instalovaných balíčků:
rpm -F *.rpm

Všechny tři zmiňované volby (-i, -U, -F) lze doplnit o volby -v a -h, které způsobí, že rpm bude informovat o tom, co právě provádí a navíc doplní instalaci (či upgrade) o „teploměr“ ukazující průběh práce. Celý povel pak může vypadat třeba takto:

rpm -Uvh balicek-1.0–2.i386.rpm

Pro případ instalace přes HTTP nebo FTP lze ještě použít parametry –ftpproxy a –ftpport pro nastavení FTP proxy a analogicky –httpproxy a –httpport pro HTTP proxy. Pokud budete instalovat ze serveru chráněného heslem, můžete přihlašovací jméno přidat do adresy serveru před zavináč takto:

ftp://uzivatel:heslo@nekde.cz/pub/RPMS/balicek-1.0–2.i386.rpm
nebo
ftp://uzivatel@nek­de.cz/pub/RPMS­/balicek-1.0–2.i386.rpm

Ve druhém případě se rpm na heslo zeptá interaktivně.


ODINSTALOVÁNÍ BALÍČKŮ

Odinstalování balíčků se provádí velice jednoduše pomocí volby -e. Rozdíl oproti instalaci je v tom, že rpm nepředáváte jméno souboru, ale jméno balíčku. To v naprosté většině případů odpovídá jménu souboru bez koncovky rpm a označení architektury. Pokud se soubor jmenuje balicek-1.0.i386–2.i386.rpm, bude jméno balíčku nejspíš balicek-1.0 – neplatí to ovšem stoprocentně. Dalšími metodami zjišťování jména balíčku se budeme zaobírat příště v sekci Získávání informací. Teď již jenom doplním, že obvykle lze odříznout i číslo verze a použít pouze jméno (v tomto případě balíček). Pakliže ale máte nainstalované různé verze jednoho balíčku (což není vyloučené, ale ani obvyklé), způsobí to, že rpm vrátí chybu. Odinstalovat více balíčků stejného jména najednou se pak musí provést přidáním volby –allmatches.

Příklady

Smazání balíčku:
rpm -e balicek-1.0
nebo
rpm -e balicek


NĚKTERÉ SPOLEČNÉ PARAMETRY INSTALACE A MAZÁNÍ BALÍČKŮ

Jak jsem se již zmínil, dobrý systém správy balíčků se postará i o závislosti. To znamená, že vám nedovolí nainstalovat balíček, který je závislý na jiném, nenainstalovaném, a naopak zabrání smazání balíčku, který potřebují jiné instalované programy. Toto chování lze ovšem potlačit a v některých případech to má i své opodstatnění, když například balíček vyžaduje přítomnost programu, který vy máte v /usr/local/bin a balíček ho očekává v /usr/bin. V praxi se do podobné situace dostanete zejména pokud si budete některé programy kompilovat a instalovat ze zdrojových kódů a jiné zase z RPM balíků, případně když budete používat RPM balíčky určené pro jinou distribuci (není to pravidlem, ale občas se liší umístění některých programů atp.). Potlačení kontroly závislostí se provádí přidáním přepínače –nodeps. Důrazně doporučuji se jeho použití vyhýbat a přikročit k němu jenom když dobře víte co děláte nebo když s jeho pomocí budete obcházet chybu v balíčku.

Dalším společným a užitečným přepínačem je –test, který způsobí, že vše probíhá jako při normální instalaci (upgradu, mazání), ovšem bez fyzického kopírování (nebo mazání) souborů. Je to dle mého soudu nejrychlejší způsob, jak zjistit, zda máte nainstalováno vše, co balíček vyžaduje, jestli máte pro instalaci dostatek volného místa a tak dále.

Příklady:

Testovací „instalace“ balíčku:
rpm -i –test balicek-1.0–2.i386.rpm

CS24_early

Smazání balíčku bez kontroly závislostí:
rpm -e –nodeps balicek-1.0–2


Veškeré informace o instalovaných balíčcích se ukládají v systémové databázi, ze které lze zjistit mnoho zajímavého. Jak na to, a také co umí rpm v oblasti kompilace programů ze zdrojových kódů si povíme v příště.

Všechny informace uvedené v tomto článku se vztahují k RPM verze 3.0.3 a ne všechny platí i pro starší verze, i když většina asi ano.

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