next up previous contents index
Volgende: 12.3.2 Het systeem van Omhoog: 12.3 Installeren van software Vorige: 12.3 Installeren van software   Inhoudsopgave   Index

12.3.1 RPM

RPM's worden o.a. gebruikt door Redhat, SuSE en Caldera. Het programma rpm staat voor Redhat Package Manager. Het is oorspronkelijk door RedHat ontwikkeld, maar is later ge-GNU-ed. RPM's zijn pakketjes die je vrij eenvoudig kunt installeren. Er zijn verschillende grafische frontends voor gemaakt om het nog wat makkelijker te maken, maar wij leggen hier uit hoe je rpm zelf gebruikt.

Hier volgt een overzicht van mogelijke commando's. Let op waar je de extentie rpm achter moet zetten en waar niet.

rpm -Uvh file.i386.rpm
Update. Als er geen oudere versie geïnstalleerd is, doet dit hetzelfde als -i. De v en h zorgen ervoor dat je kunt zien hoe ver hij is met installeren (v = verbose, h = show hash symbols).

rpm -ivh file.i386.rpm
Installeer. Als er al een andere versie is, wordt deze er gewoon naast geïnstalleerd.

rpm -e naam
Verwijder pakket naam.

rpm -qa
Toon een overzicht van geïnstalleerde RPM's. Gebruik rpm -qa $\vert$ sort voor een gealfabetiseerd overzicht.

rpm -qs naam
Toon het overzicht van bestanden die tot pakket naam behoren. Zet er geen versienummer achter. Als je wilt weten welke binaries er in een bepaald pakket zitten, kun je rpm -qs naam $\vert$ grep bin gebruiken.

rpm -qi naam
Toon informatie over pakket naam.

rpm -qip file.i386.rpm
Hiermee kun je informatie bekijken over RPM's die niet geïnstalleerd zijn.

rpm -qf file
Geeft weer bij welke RPM het bestand hoort. Je moet het complete pad voor de naam van het bestand zetten.

rpm -i -justdb file
Laat de database van RPM denken dat je het pakket file installeert, maar doe het niet echt. Dit is handig om pakketten te installeren waarvan je zelf wel weet dat het totaal nodeloos is, maar waarmee een hoop pakketten wel dependencies hebben.

Als een pakket niet wil installeren of verwijderd wil worden, kun je de opties --force en --no-deps gebruiken. Maar het kan dan goed zijn dat het programma bepaalde libraries mist en daardoor toch niet werkt. Gebruik deze opties dus niet zomaar.

Als er in de bestandsnaam i386 staat, dan is het gecompileerd voor x86-chips, dus 386, 486 of nieuwer. Staat er i586 in, dan is het met pgcc gecompileerd, zodat het geoptimaliseerd is voor Pentium-chips. Noarch geeft aan dat het platformonafhankelijk is. Geluiden en plaatjes kunnen bijvoorbeeld op elk systeem gebruikt worden (binaries en libraries niet).

Als je een bepaald bestand nodig hebt, weet dat het in een van de RPM's op de installatie-CD moet staan, maar je hebt geen flauw in idee in welke, dan is het volgende scriptje een uitkomst:

#!/bin/sh
echo search for: $2
for i in $1*; do
   rpm -qpl $i | grep $2
   if [ $? -eq 0 ]
   then
      echo found in:
      echo $i
      echo
   fi
done

Geef aan dit script als eerste argument de directory waarin een hoop RPM's gevonden kunnen worden en als tweede argument een (deel van de) te zoeken bestandsnaam mee. Na een tijdje zal dit script de juiste RPM aanwijzen.

Met behulp van het commando rpm -Va $>>$ rpmerrors worden alle geïnstalleerde RPM's gecontroleerd. De gevonden fouten worden in het bestand rpmerrors gezet. Elke regel van de output bevat 8 karakters, gevolgd door een bestandsnaam. De 8 karakters geven aan wat er mis is met het bestand. De 8 karakters kunnen zijn:

5        MD5 Sum
S        Size: bestandsgrootte
L        Symlink
T        Mtime: datum van de laatste wijziging
D        Device
U        User: de eigenaar van het bestand klopt niet
G        Group: de groep waartoe het bestand behoort klopt niet
M        Mode: permissies en bestandtype (executable of niet)

Als er niets mis is dan wordt er een . (punt) neergezet. Een voorbeeld: .M...UG. /home/ftp/lib/ld-2.1.1.so. Dit klopt, want vanwege veiligheidsredenen heb ik de eigenaar en de permissies van dit bestand van de FTP-server die ik gebruik aangepast. Het kan ook gebeuren dat een bestand niet meer aanwezig is. Dan krijg je een melding als missing /home/ftp/bin/gzip. Zoals je al ziet hoeft er dus niet per se iets ergs aan de hand te zijn. RPM controleert simpelweg of de bestanden nog net zo zijn al direct na de installatie van het desbetreffende RPM-pakket.

Naast RPM's zijn er ook SRPM's. De s staat voor source. Die bestanden eindigen op .src.rpm. Het is een pakket met de source code. Als iemand een RPM maakt, dan is de binary in het pakket afhankelijk van de versie van de libraries die de persoon geïnstalleerd heeft. Heb je zelf een oudere versie en je weet dat dat niets of niet veel zal uitmaken (zoals een wat oudere versie van header files), dan kun je de SRPM downloaden en daar zelf een RPM van maken met een binary die werkt met jouw versie van de benodigde libraries. Een SRPM compileer je met rpm --rebuild file.src.rpm. Is het compileren klaar, dan wordt de RPM onder /usr/src/RPM gezet.

Gebruik liever geen RPM's van een andere distributie dan die van jou. In een aantal gevallen maakt het niks uit, maar het hoeft niet altijd helemaal goed te werken.


next up previous contents index
Volgende: 12.3.2 Het systeem van Omhoog: 12.3 Installeren van software Vorige: 12.3 Installeren van software   Inhoudsopgave   Index
Jarkko Huijts 2002-08-17