Ú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ň