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