Hlavní navigace

Triky pro už ne začátečníky

Leoš Literák 27. 2. 2001

V dnešním čísle se na přání čtenářů podíváme na instalaci balíčků typu RPM. Jelikož nejsem debianista, balíčky DEB přenechám nějakému dobrovolníkovi :-).

Úvodem jen malé vysvětlení titulku. Pokud jste se úspěšně prokousali všemi dosavadními čísly Triků, nemůžete už být začátečníky. Takže gratuluji :-). Jak jsem již předestřel, dnes se budu zabývat správou balíčků v RedHatu, Mandraku, SuSE, TurboLinuxu, Caldeře a dalších několika stovkách distribucí, které používají RPM. RPM je akronym pro RedHat Package Manager.

V dávných dobách, kdy Slackware 3.0 vládl linuxovým distribucím, byl standardem pro instalaci balíčků formát tgz (tar.gz). Používal se nejen pro přenos zdrojových textů, nýbrž i pro binární soubory. Výhodou byla jednoduchost (pokud jste ovládali příkazovou řádku) a nezávislost na distribuci, protože tomuto formátu rozuměli všichni. Jenže byly tu i problémy. Nainstalovali jste zcela novou verzi programu XY ve verzi 0.1. Celí žhaví jste spustili tento program, ale jaké bylo vaše zklamání, když se místo XAw (X Athena Widget – původní knihovna přípravků projektu XFree) aplikace objevila na terminálu (v konzoli) jen lakonická hláška, že vám chybí nějaká knihovna. Takže jste se připojili k Internetu (nebo další týden odjeli do školy) a stáhli si ji a nainstalovali. A pak zjistíte, že tato knihovna vyžaduje třeba knihovnu libjpeg.

Výše zmíněný problém začalo řešit několik projektů. Pokud jde o kompilaci ze zdrojových balíčků, řešením se ukázal autoconf (popis najdete ve starším článku na Rootovi). Uživatele, kteří preferují již zkompilované binární soubory, zase potěšily distribuce RedHat a zhruba ve stejné době vznikající Debian. Přes poněkud odlišnou filozofii obě zavedly pojem závislosti. Díky němu už během instalace balíku zjistíte, co vám chybí a obvykle vám ani systém nedovolí nainstalovat balíček, který ke svému běhu vyžaduje program či balíček, jenž není na vašem počítači nainstalován.

Speciálním případem výše zmíněného problému je situace, kdy sice již na svém stroji máte nějakou knihovnu, ale ve starší verzi. Program pak také havaroval, ale většinou s nějakou kryptickou zprávou, která uživatele jen zmátla. Proto v RPM najdete nejen závislosti na určité balíčky (soubory, knihovny), ale autor balíčku může vyžadovat i určitou verzi daného balíčku (glibc 2.2 nebo KDE 2.0 a větší).

Takže co vlastně to RPM všechno obsahuje? Obecně bychom to mohli rozdělit na hlavičku a vlastní komprimovaná data. V hlavičce najdete název programu, skupinu (stromová struktura, obdoba souborového systému, každý balíček patří do nějaké skupiny, například Knihovny, Aplikace/Internet či Dokumentace), verze programu (1.0.3) a případně release (kolikáté je to vydání daného balíčku stejné verze), velikost instalovaných dat (3 MB), domovská stránka programu, kdo, kdy a kde vytvořil tento balíček a licence (GPL, Commercial). Velmi důležité jsou již zmíněné závislosti. Autor balíčku (balič :-) může určit názvy a verze balíčků či knihoven, které daný balíček vyžaduje. Pokud je nemáte, nemůžete běžným způsobem balíček nainstalovat. Z logiky věci vyplývá, že balíčky mohou nejen vyžadovat závislosti, ale i je poskytovat. Například glibc poskytuje desítky závislostí.

Dost bylo teorie, přejděme raději k praxi. Asi základem je příkaz rpm. Pokud se jej naučíte používat, získáte přístup ke všem možnostem tohoto docela mocného programu. Předpokládejme, že jste si stáhli balíček nedit-5.1.1–1.i386.rpm. Již z názvu souboru zjistíte název balíčku (nedit), jeho verzi (5.1.1), release (1) a platformu (386 – balíček je tedy již zkompilován pro procesory 386 a vyšší). Platforma se může lišit, obvyklé jsou 586 (které nemusí běžet na 486kách), 686, alpha, noarch (nezávislé na platformě, například zvuky, obrázky či interpretované programy – perl, tk) a src. Posledně jmenovaný znamená, že balíček není zkompilovaný a obsahuje zdrojové kódy.

Pokud program ještě nemáte nainstalován, můžete tak učinit příkazem rpm -i nedit-5.1.1–1.i386.rpm. Asi vám nemusím připomínat, že toto je docela významný zásah do systému, takže jej může provádět pouze uživatel root. Pokud už balíček na svém stroji náhodou máte, uvidíte takovou hlášku: package nedit-5.0.1–1 is already installed. Je to starší verze. OK, zbavíme se ji a nahrajeme tam novou. Příkaz rpm -e nedit-5.0.1–1 odstraní starou verzi a rpm -i nedit-5.1.1–1.i386.rpm nahraje novou. rpm -e tedy smaže zvolený balíček i všechny jeho soubory (konfigurační soubory, případně i dočasné soubory, třeba fonty od texu). Pozor, rpm -e vás nebude žádat o potvrzení, takže buďte při jeho používání opatrní. Ale to je obecná vlastnost unixových příkazů.

Asi vás napadá, jestli nahrazení staré verze programu novou nejde dělat nějak jednodušeji. Jde. Pohodlnějším a bezpečnějším způsobem je upgrade. Ten nahraje novou verzi programu a přitom zachová i veškeré konfigurační soubory. Navíc jej můžete použít, i když program ještě není nainstalován. Takže já osobně instaluji veškeré programy takto: rpm -U nedit-5.1.1–1.i386.rpm. Jednou z výhod tohoto schématu je, že dokáže slušně zvládat situaci, kdy se mezi původní a novou verzí nějak změnily konfigurační soubory. V takovém případě nainstaluje jejich novou verzi a pokud jste je nějak upravili, uloží jejich zálohu s příponou .rpmsave. Takže po každém upgradu byste si měli ověřit, zda se vám to taky nestalo. Ušetříte si tak mnohá nepříjemná překvapení. Pokud chcete opravdu čistý upgrade, ve smyslu nahrání nových verzí, použijte volbu -F. Příkaz rpm -F nedit-5.1.1–1.i386.rpm vám tedy nahraje novou verzi neditu, ale pouze tehdy, pokud jste jej již měli dříve nainstalován.

Někdy příště se podíváme na pokročilejší vlastnosti rpm a na programy KPackage, GnoRPM a Purp. O Midnight Commanderu a jeho podpoře RPM jsem již psal v některém starším čísle. Na shledanou na LinuxExpu!

Našli jste v článku chybu?

1. 3. 2001 10:19

Yenya (neregistrovaný)

Idealni je na jednom systemu, ktery neobsahuje RPM. Pokud mate vice nez jeden system, potrebujete balickovaci software (nebo se musite rozloucit s jakoukoli udrzovatelnosti a upgradovatelnosti - a tedy i bezpecnosti - vaseho systemu). A pro balickovaci software je lepsi SysV init.

-Yenya



28. 2. 2001 11:29

Jan Vitek (neregistrovaný)

vyhody u desitek pocitacu?

To neberu, pokud uz o to stojim, si muzu balicky vytvaret i na Slacku a pak je aplikovat na ostatnich pocitacich.

SysVinit je mozna vhodny u redhatu, mnohem jednodussi a rucne lepe konfigurovatelnejsi je BSDinit. Na systemech, ktere neobsahuji rpm je idealni.





Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Lupa.cz: Slevové šílenství je tu. Kde nakoupit na Black Friday?

Slevové šílenství je tu. Kde nakoupit na Black Friday?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Babiš: E-shopů se EET možná nebude týkat

Babiš: E-shopů se EET možná nebude týkat

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky