tux rechts Hoe Linux software te installeren? tux links
door Hans Lunsing, 20 juni 2006

 

 

RPM is het wijdst verbreide formaat voor pakketbeheer, en is door het Linux Standard Base (LSB) consortium tot standaard verkozen. We zullen er daarom wat dieper op ingaan dan strikt noodzakelijk is. Eerst komt de installatie van gewone binaire RPM pakketten aan de orde. Daarna wordt besproken hoe u met een RPM broncode pakket moet omgaan. Tot slot worden enkele uitbreidingen van het RPM systeem besproken.

 

^top Binaire RPM pakketten

Namen van RPM files zijn als volgt samengesteld:

pakketnaam-versie-uitgave.architectuur.rpm

Bijvoorbeeld:

athena-devel-2.4.3-87.i586.rpm

Hierin is athena-devel de naam van het pakket, 2.4.3 het versienummer en 87 het uitgavenummer. Het pakket is geschikt voor i586 (intel processor van de 586 familie: Pentium) en beter. Welke architectuur u hebt kunt u achterhalen door het programma arch te draaien, of uname met de optie -m (machine): uname -m. Op een 80486 kunt u geen i586 of i686 (Pentium IV en hoger) pakket installeren, maar wel een i386 pakket. Het is ook mogelijk dat een pakket voor elke architectuur geschikt is. In dat geval wordt noarch als aanduiding gebruikt, b.v.

athena-images-1.2-3.noarch.rpm

U installeert het voorbeeldpakket athena-devel met de opdracht

rpm -ivh athena-devel-2.4.3-87.i586.rpm

Opdracht -i staat voor "install", de optie v (voor "verbose") laat RPM veel informatie over het installatieproces geven, en de optie h (voor "hash symbols") zorgt voor een voortgangsbalkje zodat u kunt zien hoe ver RPM met installeren is gevorderd. Het is mogelijk dat RPM constateert dat niet aan de afhankelijkheden is voldaan, d.w.z. dat niet alle voor het pakket benodigde software is geïnstalleerd. Het geeft dan een lijst van ontbrekende pakketten. Dit kan twee dingen betekenen:

In het laatste geval kan het pakket zonder problemen worden geïnstalleerd omdat alle benodigde software er is, ook al weet RPM dat niet. Om het pakket dan toch geïnstalleerd te krijgen moet de optie --nodeps (voer geen check op dependencies, afhankelijkheden, uit) worden gebruikt:

rpm -ivh --nodeps athena-devel-2.4.3-87.i586.rpm

Als een pakket met deze naam, maar eventueel een ander versie- en/of uitgavenummer, al op uw systeem staat zal RPM weigeren te installeren. Als het al aanwezige pakket een lager versienummer of - bij hetzelfde versienummer - een lager uitgavenummer heeft kunt u "upgraden" door de opdracht -U in plaats van -i te gebruiken:

rpm -Uvh athena-devel-2.4.3-87.i586.rpm

Wilt u een hoger versie en/of uitgavenummer overschrijven, dan zult u de optie --force moeten gebruiken:

rpm -Uvh --force athena-devel-2.4.3-87.i586.rpm

U kunt de upgrade opdracht -U ook gebruiken als het pakket nog niet op het systeem staat. Het zal dan worden geïnstalleerd alsof de installatie opdracht -i werd gebruikt.

Een pakket wordt gedeïnstalleerd met de -e (van "erase") opdracht, alleen gevolgd door de naam van het pakket:

rpm -e athena-devel

Er kan veel meer met RPM. Een uitgebreide handleiding voor het werken met RPM vindt u hier op http://www.redhat.com. Gebruikers van een op RPM gebaseerde distributie kunnen met het commando man rpm ook de rpm manual pages raadplegen.

RPM pakketten zijn in beginsel specifiek voor elke distributie. De belangrijkste verschillen hebben betrekking op de plaats in de directorystructuur waar de bestanden van het pakket worden neergezet, of waar andere bestanden verwacht worden te zijn. Gelukkig conformeren de belangrijkste distributies als Fedora, Mandriva en SUSE zich aan de Linux Standard Base (LSB). Naast ondermeer het feit dat het RPM formaat tot standaard is uitgeroepen, is ook de File System Hierarchy (FHS), ofwel de directorystructuur gestandaardiseerd. Niettemin kan de FHS soms op verschillende wijze worden geïnterpreteerd. Zo plaatst SUSE KDE en Gnome in speciale directories onder /opt, /opt/kde en /opt/gnome, terwijl Fedora en het van Redhat afgeleide Mandriva alle KDE en Gnome bestanden in de /usr structuur inbedden. Het gevolg is dan ook dat RPM pakketten van KDE en Gnome software voor SUSE niet onder Fedora of Mandriva zijn te gebruiken, en omgekeerd.

Andere verschillen hebben onder meer betrekking op opstartbestanden (init scripts) en de configuratie van systeemgebruikers. Ook de vereiste versie van de C library en van het RPM systeem kunnen verschillen, maar dat is niet zozeer een probleem tussen Linux distributies onderling maar tussen verschillende versies van Linux distributies in de tijd.

Niettemin zijn heel veel nieuwe RPM pakketten wel geschikt voor de nieuwere versies van de voornaamste distributies, ook al zijn ze voor een bepaalde distributie bedoeld. Er zou mogelijk een probleem kunnen zijn met afhankelijkheden als deze in de vorm van pakketnamen zijn gegeven. Naam en samenstelling van pakketten kunnen van distributie tot distributie namelijk verschillen. Als zeker is dat aan een bepaalde afhankelijkheid toch is voldaan kan het pakket dan altijd nog met de optie --nodeps worden geïnstalleerd. En mocht blijken dat het pakket toch niet werkt kan het altijd weer worden gedeïnstalleerd of vervangen door de bestaande wel werkende versie. In zo'n geval is het misschien een idee om de installatie te starten met een source rpm, of zelfs een source tarball. Deze kunnen immers voor een systeem passend worden gemaakt, en in het geval van de source tarball zijn er mogelijkheden om deze in het RPM systeem in te passen (met alien of checkinstall) ook al hoeft dat niet persé.

 

^top RPM broncodepakketten

Naast de binaire RPM pakketten met al gecompileerde software zijn er ook broncode pakketten, ook wel SRPM pakketten genoemd. Hun naamsextensie is .src.rpm. Het voordeel van het compileren van broncode op uw eigen systeem is dat het gecompileerde programma precies bij uw eigen systeem, zoals processor en aanwezige library versies, past.

Het bij ons voorbeeld behorende broncode pakket zou

athena-devel-2.4.3-87.src.rpm

heten. De architectuur aanduiding is voor broncode niet relevant en daarom vervangen door de aanduiding "src". De broncode wordt nu geïnstalleerd en vervolgens gecompileerd met de opdracht

rpm --rebuild athena-devel-2.4.3-87.src.rpm

t/m rpm versie 3, en met de opdracht

rpmbuild --rebuild athena-devel-2.4.3-87.src.rpm

vanaf rpm versie 4. Daarbij worden de broncode, de pakketspecificatie en het aangemaakte binaire RPM pakket in een speciale directorystructuur geplaatst. Normaliter is deze te vinden onder /usr/src/<package directory>, waarin <package directory> verschilt al naar gelang de distributie. Bij Fedora vinden we de RPM structuur onder /usr/src/redhat, bij SUSE onder /usr/src/packages, en bij Mandriva onder /usr/src/RPM. Hij bestaat uit de volgende directories:

Normaliter zal deze directorystructuur al bij installatie van het rpm pakket tijdens de installatie van de Linux distributie zijn opgezet. Zo niet, dan zult u hem eerst zelf moeten maken. U kunt indien gewenst een andere plaats voor de directorystructuur specificeren door in het configuratiebestand /etc/rpmrc naar deze plaats te verwijzen.

Na het compileren wordt automatisch een binair RPM pakket aangemaakt, dat u terugvindt in directory RPMS/<arch>, waarin <arch> staat voor de architectuur. Dit kunt u vervolgens op de gebruikelijke wijze installeren.

Indien gewenst kunt u de RPM pakketspecificatie voorafgaand aan de compilatie aan uw eigen wensen aanpassen. In dat geval moet u het broncode pakket op de normale wijze installeren:

rpm -ihv athena-devel-2.4.3-87.src.rpm

Vervolgens gaat u naar de SPECS directory en past u het specificatiebestand aan. Het kan bijvoorbeeld nuttig zijn om de directories te wijzigen waarin de bestanden van het binaire RPM pakket bij installatie worden geplaatst. Zo zou u een Fedora broncode pakket van een KDE programma geschikt kunnen maken voor installatie op een SUSE systeem. Nadat het specificatiebestand is aangepast kan het binaire RPM pakket worden gebouwd met de opdracht:

rpm -ba athena-devel-2.4.3-87.spec

t/m rpm versie 3, en met de opdracht

rpmbuild -ba athena-devel-2.4.3-87.spec

vanaf rpm versie 4. De opdracht -b staat voor "build", en met de optie a (voor "all") wordt aangegeven dat het hele bouwproces in één keer moet worden doorlopen.

 

^top Beheerssystemen voor RPM

In tegenstelling tot het Debian package management heeft RPM niet één universeel standaard beheerssysteem. Elk van de drie grote RPM distributies, SUSE, Mandriva en Fedora, heeft zijn eigen systeem ontwikkeld. Daarnaast is er bovendien Apt4rpm, het naar RPM geporteerde APT van Debian, dat geschikt is voor zowel SUSE, Mandriva als Fedora. Maar ook al is dat universeel, in geen van de drie distributies is het standaard en werkt het daarom niet "out-of-the-box". Hoewel er menugestuurde en/of grafische gebruiksomgevingen voor elk van de vier systemen zijn kunnen ze ook allemaal vanaf de opdrachtregel worden gestuurd. Alle vier halen te installeren software pakketten uit a priori opgegeven repositories, die op een voor elk systeem eigen wijze zijn ingericht. Ik stel ze hier voor: