RPM
Fra Wikipedia, den frie encyklopedi.
RPM er et av de aller vanligste pakkeformatene for GNU/Linux i dag. RPM er en forkortelse for Red Hat Package Manager, og som de fleste skjønner er det Red Hat som står bak dette systemet. I tillegg til å være et pakkeformat, er RPM også et pakkesystem, det vil si et program som tar seg av installasjon, oppgradering, avinstallering osv. av RPM-pakker.
RPM kan brukes alene, eller i sammenheng med en overordnet pakkestyrer. Alene er RPM et godt verktøy, men det er først sammen med en slik pakkestyrer at formatet virkelig kommer til sin rett. I denne artikkelen ser vi kun på enkel bruk av RPM alene. Artikkelen om pakkestyrere har mer info om spesifikk bruk av disse verktøyene.
| Innholdsfortegnelse |
Egenskapene til en RPM-pakke
RPM-pakker har en hel rekke egenskaper. Som regel er filnavnet gjort slik at man raskt skal kunne se hvilke grunnleggende egenskaper en pakke har. Her nevner vi de viktigste. Se illustrasjon.
Pakkenavn
Den viktigste egenskapen til en pakke er pakkenavnet. Når man arbeider med RPM-filer er det viktig at man skiller filnavn fra pakkenavn. Filnavn er navnet på rpm-filen som kan installeres. RPM-pakken har også et pakkenavn, som ikke er avhengig av filnavnet, men spesifisert i selve pakken. Når man arbeider med pakker som allerede er installert, eller bruker en Pakkestyrer, bruker man pakkenavn, og ikke filnavn.
Versjon
Pakker brukes til å installere programmer. Programmer har versjoner. Versjonen til en RPM-pakke er versjonen av programmet pakken inneholder.
Utgivelse
Utgivelse forteller deg om selve pakken har hatt oppdateringer. Om det oppdages feil i selve pakken blir pakken bygd om, når dette skjer øker utgivelsesnummeret. Med andre ord, utgivelse omhandler selve pakken, mens versjon omhandler innholdet i pakken.
Arkitektur
Pakker kan bygges for å fungere på alle arkitekturer, men som regel bygger man pakker for en bestemt type datamaskiner. Dette gjøres for å få optimaliserte pakker, som tar bedre nytte av nyere, og raskere maskiner. De fleste datamaskiner (Intel eller AMD) er kompatible med i386, og de fleste pakker bygges derfor for nettopp i386.
Beskrivelse
Alle pakker inneholder en beskrivelse av innholdet i pakken. Denne beskrivelse brukes blant annet av pakkestyrere for å søke etter pakker.
Endringslogg
Alle pakker inneholder en endringslogg der man finner informasjon om forandringer gjort i pakken. Merk at endringsloggen omhandler selve pakken, og ikke innholdet i pakken.
Basisoperasjoner
Installasjon
Den aller enkleste operasjonen rpm kan utføre er installasjon av en RPM-fil. Denne kan refereres til ved hjelp av en URL eller ved et filnavn. Boksen under viser en enkel installasjon:
# rpm --install pakkenavn.rpm
Dette kan forkortes til
# rpm -i pakkenavn.rpm
De to kommandoene over vil begge installere en pakke. Men ofte vil vi ha litt mer informasjon når vi installerer pakker. For å få dette til kan vi legge til flere valg. Vanligvis legger man til:
- -v - Fortell meg hva som skjer.
- -h - skriv en fremskrittsindikator (###########)
Eksempel:
# rpm -ivh pakkenavn.rpm
RPM vil her si hva den gjør, og vise en rekke #### for å vise fremgangen i installasjonen.
Oppgradering
For å oppgradere en pakke benyttes parameteren --upgrade.
# rpm --upgrade pakkenavn.rpm
Parameteren -U tilsvarer --upgrade.
# rpm -U pakkenavn.rpm
Hvis rpm ikke finner tilsvarende pakke å oppgradere, installeres den spesifiserte.
Sletting
For å slette en pakke, brukes parameteren --erase.
# rpm --erase pakkenavn
Legg merke til at det ikke brukes noen angivelse for versjon eller pakkefilnavn for å slette pakker. Dette er gjort for å gjøre det lettere å fjerne pakker.
Vise hvilke pakker som er installert
For å vise alle pakker som er installert, brukes parameter -qa:
# rpm -qa
Denne kommandoen gir som oftest naturlig nok tilbake en lang liste med pakkenavn.
For å vise en spesifikk pakke som er installert, brukes bare -q og navnet på pakka:
# rpm -q pakkenavn pakkenavn
Vise utvidet informasjon om en pakke
For å vise informasjon om en pakke brukes parameteret -q sammen med flere andre parametre:
# rpm -ql foobar #list filer i installert foobar-pakke # rpm -qpl foobar-1.0.0.i386.rpm #list filer i rpm-fil # rpm -qf /etc/services #finn ut hvilken pakke /etc/services tilhører # rpm -qi foobar #viser informasjon om foobar
Parametrene har disse funksjonene:
- -q: spørring (query)
- -p: Spør på en fil (file)
- -l: list filer
- -f:
- -i: Informasjon om en installert pakke
Altså: Ved å bruke -q sammen med kombinasjoner av andre parametre kan man utføre spørringer på installerte pakker, eller RPM-filer man har liggende (eller til og med filer fra FTP-speil og lignende). Man-siden til rpm gir en full oversikt over hvilke valg som finnes.
Avanserte funksjoner
Om RPM-pakker til ens egen Linux-distribusjon ikke er å oppdrive, kan man kompilere programmet selv med egne RPM-filer som inneholder programvarens kildekode. Disse filene har navn på formen pakkenavn.src.rpm. Som oftest trenger ikke disse filene være spesiallaget for den distribusjonen man bruker. Slik kompilering gjøres med kommandoen:
# rpmbuild --rebuild pakkenavn.src.rpm
Om alt går bra og man ikke får noen feilmeldinger, vil den nye pakken vanligvis ha lagt seg i /usr/src/redhat/RPMS/i386/.
Det er også mulig å bygge RPM-pakker fra vanlige kildekodearkiver (.tar.gz- eller .tar.bz2-filer), ettersom en kildekode-RPM egentlig bare inneholder arkivfilen med kildekode og en .spec-fil. Dette gjøres ved først å laste ned kildekodepakken og legge den i /usr/src/redhat/sources, og .spec-filen (som man må ha tilgjengelig eller skrive selv) i /usr/src/redhat/specs.
Da skal man enkelt kunne bygge egne RPM-filer med kommandoen:
# rpmbuild -ba pakkenavn.spec
Historie
Red Hat lot seg inspirere av Bogus (http://www.cs.unc.edu/~faith/bogus.html) sin pakkehåndtereren pms da de lagde RPM. Bogus var den første Linux-distribusjonen som brukte en pakkehåndterer slik vi tenker på dem i dag.
Se også
Eksterne ressurser
- RPM.org (http://www.rpm.org)
- Max RPM, en bok om RPM (http://www.rpm.org/max-rpm/)

