Úvod do RPM
-=-=-=-=-=-=-
Without the wind, the grass does not move. Without software,
hardware is useless.
-- Geoffrey James, "The Tao of Programming"
Jan "Yenya" Kasprzak, 6. listopadu 1997
V předchozím čísle jsem se věnoval problematice balíků softwaru
obecně a informacím o tom, co by správce balíků měl umět. V tomto
čísle se podrobněji podíváme na systém RPM (RedHat Package Manager)
z Red Hat Linuxu.
Současný systém RPM je výsledkem dlouhého vývoje. Je založen
na starších systémech Red Hat Softwaru, jako je RPP a PM, a také
na správci balíků PMS, použitého v distribuci BOGUS blahé paměti.
První verze RPM byly psány v Perlu a nepodporovaly více architektur.
Použití Perlu také komplikovalo nasazení RPM v omezeném prostředí,
jako jsou například bootovací diskety při instalaci systému.
V současné době se používá RPM verze 2, což je systém
psaný v jazyce C, přenositelný (a také přenesený) na nejrůznější
architektury, s dostatečně rychlým a robustním designem databáze.
Formát databáze i RPM balíků je navržen rozšiřitelně, lze tedy
přidávat nové vlastnosti. V poslední době to například byly
závislosti mezi balíky nebo balíky nezávislé na.architektuře
(to jsou ty, které neobsahují žádné binární programy závislé
na architektuře; příkladem je balík ghostscript-fonts nebo howto).
Cíle návrhu RPM
- Jednoduché instalování a rušení balíků. Preinstalační
a post-instalační skripty dávají autorovi balíku kompletní
kontrolu nad tím, jak se balík bude instalovat (například qmail
přidává určité uživatele do /etc/passwd, ssh může při instalaci
vygenerovat RSA pár klíčů a podobně). Totéž platí pro skripty před
a po odinstalování balíku. Je-li balík navržen správně, může pro
svoji instalaci i odinstalování učinit vše potřebné.
- Kontrola instalovaných balíků. Správce balíků umí nejen zjistit,
které soubory patřící danému balíku se změnily, ale umí také
například vyvolat verifikační skript, který umožní například
zkontrolovat syntaxi konfiguračních souborů.
- Jednoduchá tvorba balíků. Tvorba a údržba balíků v RPM není o
mnoho složitější, než kompilování a instalace ze zdrojových textů.
Pokud se tato instalace provádí na více počítačích, nebo dokonce
chcete čas od času instalovat novější verzi daného softwaru, RPM
značně šetří čas: ve zdrojovém RPM balíku je totiž poznamenáno,
jaké všechny úpravy autor dělal na původní zdrojové distribuci
softwaru, než vznikla kompilace a později i běhu schopná
instalace.
- Práce na více architekturách. RPM zamezí duplikaci práce při
kompilování a používání téhož softwaru na více architekturách.
Pokud je kompilace nebo instalace balíku na jiné platformě odlišná
od původní platformy, má RPM možnost ve zdrojovém balíku uvádět
příkazy, které se provedou jen na určitých architekturách.
Uvnitř RPM balíku
Nebudu zde popisovat přesně definici struktury RPM souboru,
ale přesto stojí za to alespoň rámcově vědět, co všechno RPM balík
obsahuje.
- Jméno balíku. Tato položka je zde proto, aby bylo možné at
i na svazcích, které nepodporují dostatečně dlouhá jména souborů
(jako například FAT nebo Minix FS). Jako příklad jména si uveďme
třeba ssh-1.2.21-1i.i386.rpm.
Jméno balíku se obvykle skládá z těchto komponent:
- Jméno softwaru (zde: ssh). Odpovídá názvu programu nebo
programového systému, který je obsažen v daném balíku
nebo souhrnně pojmenovává soubory v tomto balíku (třeba
XFree86-100dpi-fonts).
- Verze softwaru (zde: 1.2.21). Identifikuje verzi programu, který
je uvnitř daného balíku.
- Verze balíku (\emph{package release}; zde: 1i). Odpovídá zhruba
tomu, kolikrát byl balík znovu zabalen s různými modifikacemi
a úpravami a zveřejněn. Pokud se například najde chyba
v post-instalačním skriptu, může autor balíku vydat nový release
balíku.
- Architektura (zde: i386). Specifikuje, pro kterou platformu
je balík určen. Navíc poslední verze RPM podporují
speciální architekturu noarch, která značí, že balík lze
instalovat na libovolné platformě (například již zmiňovaný
balík ghostscript-fonts). V RPM balíku je kromě hardwarové
architektury ještě uveden operační systém, pro který je balík
určen. Tento atribut se ale neprojeví v názvu balíku.
- Informace o balíku jako celku:
- datum a čas vytvoření balíku.
- datum a čas instalace balíku, jedná-li se o již nainstalovaný
balík.
- celková velikost všech souborů v balíku.
- jméno stroje, na kterém byl balík vytvořen.
- jméno člověka nebo firmy, která balík distribuuje.
- jméno distribuce, ke které balík patří.
- skupina softwaru, do které balík náleží (například balík
ssh patří do.skupiny Applications/Networking). Seznam skupin
a podskupin zveřejňuje Red Hat Software. Skupina se používá
k tomu, aby uživatel byl schopen procházet balíky tematicky
patřící k sobě.
- MD5 kontrolní součet celého balíku.
- libovolný (i nulový) počet digitálních PGP podpisů. Tyto podpisy
slouží k ověření autora balíku. Balíky distribuované Red Hat
Software jsou podepsány jedním PGP klíčem, takže je možné je
zkontrolovat.
- popis balíku -- jednořádková informace o balíku (summary) a
jednak libovolně dlouhý popis (description).
- instalační a verifikační scripty.
- Informace o jednotlivých souborech:
- jméno souboru s cestou
- obsah souboru
- přístupová práva
- vlastník a skupina souboru
- MD5 kontrolní součet každého souboru
V příštím čísle se budeme věnovat jednotlivým parametrům
programu RPM pro instalaci, rušení a upgradování balíků a pro
získávání informací o balících.
výheň