RPM Package Manager
Van Wikipedia
RPM Package Manager (of RPM, oorspronkelijk Red Hat Package Manager genaamd) is een softwarepakketbeheersysteem dat primair is bedoeld voor het besturingssysteem Linux. RPM installeert, updatet, verwijdert, verifieert en bevraagt softwarepakketten. RPM is het standaardsoftwarepakketformaat van de Linux Standard Base. RPM is oorspronkelijk ontwikkeld door Red Hat voor Red Hat Linux, maar wordt nu door vele Linuxdistributies gebruikt. Het is daarnaast ook gepoort naar enkele andere besturingssystemen, zoals Novell NetWare (sinds versie 6.5 SP3) en IBM AIX (sinds versie 5, zie RPM-homepage (Engelstalig) voor alle platforms die worden ondersteund). De vorm waarin het acroniem "RPM" heden ten dage wordt gebruikt, i.e. in de betekenis "RPM Package Manager", is een goed voorbeeld van een recursief acroniem.
Inhoud |
[bewerk] De RPM-database
Achter de schermen van RPM zit de RPM-database. Deze bevat alle informatie voor elk geïnstalleerd pakket. De database houdt de gegevens van elke file (die door middel van RPM is geïnstalleerd) bij. Daardoor kunnen diezelfde geïnstalleerde files eenvoudig weer worden verwijderd. Indien de database verstoord raakt (wat kan gebeuren indien het RPM-programma abrupt wordt afgebroken), kan de database vaak toch nog worden hersteld dankzij de ingebouwde dubbelgelinkte lijst. Op Red Hatsystemen staat de database in /var/lib/rpm
.
[bewerk] Pakketetiket
Elk RPM-softwarepakket heeft een etiket dat de volgende gegevens bevat:
- de pakketnaam
- de versie van het pakket (die van de oorspronkelijke softwarebron wordt overgenomen)
- de release (het aantal keren dat een gelijkende versie van het pakket werd samengesteld); met dit veld wordt bovendien vaak de desbetreffende distributie waarvoor het bedoeld is, aangeduid, bijvoorbeeld door tekenreeksen als "mdk" (Mandriva Linux), "fc4" (Fedora Core 4), "rhl9" (Red Hat Linux 9), "suse93" (SuSE Linux 9.3) etc.
- de architectuur waarop het pakket werd gebouwd (i386, i686, athlon, ppc, etc.)
Elk RPM-softwarepakket heeft normaliter het volgende formaat:
<naam>-<versie>-<release>.<arch>.rpm
Een voorbeeld:
nano-0.98-2.i386.rpm
Het pakketetiket is vervat in de RPM-softwarepakketfile, maar stemt niet noodzakelijk overeen met de naam van de file. Broncode kan ook in RPM-files verpakt en gedistribueerd worden. Zulke pakketetiketten behoren niet tot een bepaalde architectuur en krijgen daarom als architectuurbenaming "src" (van het Engelse "source" = bron). Bijvoorbeeld:
libgnomeuimm2.0-2.0.0-3.src.rpm
Daarnaast worden softwarepakketbibliotheken (libraries) voor elke versie in twee afzonderlijke pakketten gedistribueerd. Het ene pakket bevat de voorgecompileerde code, het andere (de library!) bevat de ontwikkelingsfiles (zoals zgn. headerfiles) van het desbetreffende pakket. Aan de naam van deze librarypakketten is de tekenreeks "-devel" toegevoegd. Om de library te laten samenwerken met andere programma's, dient de versie van de voorgecompileerde code overeen te stemmen met die van de library.
RPM-files met de extensie noarch.rpm verwijzen naar files die niet afhankelijk zijn van een bepaalde computerarchitectuur. Tot deze categorie behoren onder andere beeld- en geluidsfiles en door andere programma's te gebruiken tekstinformatiefiles.
[bewerk] Voor- en nadelen van het RPM-systeem
Voordelen die vaak worden genoemd bij het gebruik van RPM-pakketten boven dat van andere manieren om software te verzamelen en te installeren, zijn:
- Het installeren van programma's gebeurt steeds via dezelfde weg.
- Het verwijderen van programma's is eenvoudig.
- Populariteit: beschikbaarheid van veel pakketten, ook al dient er een hercompilatie plaats te vinden voor een andere distributie.
- Niet-interactieve installatie: dit maakt het makkelijk om installatie te automatiseren.
- Oorspronkelijke bronbestanden meegeleverd: dit maakt verificatie mogelijk.
- Cryptografische verificatie met GPG en md5.
- DeltaRPM's, die het RPM-equivalent zijn van patchfiles, zijn te combineren met reeds door RPM geïnstalleerde pakketten, waardoor updates kunnen worden uitgevoerd. Dit is een veel handiger manier om door RPM geïnstalleerde software te updaten, omdat DeltaRPM niet het oorspronkelijke RPM-pakket nodig heeft om de update uit te voeren.
Vaak genoemde nadelen zijn onder meer:
- Er zitten soms (terugwaarts) incompatibele veranderingen in het pakketformaat.
- De documentatie is incompleet en/of verouderd.
- Het maken van RPM-pakketten heeft een steile leercurve.
- Pakketversieafhankelijkheden spreken elkaar soms tegen, afhankelijk van de gebruikte Linuxdistributie.
- "Gewone" programma's zijn niet in staat om RPM-pakketten uit te pakken, zoals bijvoorbeeld mogelijk is bij tgz-files. Hierbij moet echter worden verteld dat de tarball van de broncode van het programma "rpm" een shellscript bevat - rpm2cpio.sh[1] - dat in staat is om het "cpio"-archiefgedeelte van een RPM-file uit te pakken (door slechts gebruik te maken van "od", "expr", "dd" en "gunzip").
RPM is ook bekritiseerd voor het ontbreken van consistentie in pakketnamen en -inhoud, wat het automatisch afhandelen van afhankelijkheden kan bemoeilijken. Dit is echter geen probleem dat uniek is voor het RPM-systeem, omdat het een coördinatieprobleem betreft tussen de grote Linuxdistributies die RPM als pakketbeheersysteem gebruiken, zoals Red Hat Linux, SuSE en Mandriva Linux. Bij het gebruik van RPM-pakketten van een specifieke distributie (laten we Red Hat Linux zeggen) of van RPM-pakketten die zijn gebouwd voor een bepaalde distributie (bijvoorbeeld Freshrpms [2] voor Red Hat Linux) kan een automatische afhankelijkhedenproef werken dankzij het gebruik van gereedschap als "yum" (Yellow Dog Updater Modified) of "apt" (Advanced Packaging Tool) (zie onder). Exclusief gereedschap voor Mandriva Linux is "urpmi", dat kan helpen bij de zogenaamde hel van afhankelijkheden.
[bewerk] Het maken van RPM's
Het "recept" voor het maken van een RPM-pakket is een specfile. Namen van specfiles eindigen op ".spec" en deze files bevatten de pakketnaam, versie, RPM-revisienummer, de stappen om pakketten samen te stellen, te installeren en op te schonen, plus een changelog (= lijst van veranderingen). Uit een enkele RPM-specfile kunnen, indien gewenst, verscheidene pakketten worden samengesteld. RPM-pakketten worden gemaakt met behulp van "rpmbuild".
[bewerk] Gerelateerd gereedschap
RPM wordt vaak door ander gereedschap gebruikt om afhankelijkheden te verwerken, zoals "yum" (Yellow dog Updater Modified) en (de met RPM compatibele versie van) "apt" (Advanced Packaging Tool).
Enkele andere softwarepakketbeheersystemen zijn:
- "dpkg", gebruikt met "apt" in Debian GNU/Linux
- "portage", gebruikt met "emerge" in Gentoo Linux
- "Encap Package Management System"
- "cygcheck", gebruikt in Cygwin
De volgende gereedschappen dienen enkel als toegang ("front-end") naar op RPM gebaseerde systemen:
- "YaST", gebruikt in SuSE
- "urpmi", gebruikt in Mandriva Linux
- "yum", gebruikt in Yellow Dog Linux en in Fedora Core.
Zie ook: Archiefformaten
[bewerk] Externe referenties en verwijzingen
- Eric Foster-Johnson, 2003: Red Hat RPM Guide (ISBN 0764549650), een complete, actuele handleiding voor het bouwen van RPM-pakketten. (Engelstalig)
- Fox, Pennington, Red Hat 2003: Fedora Project Developer's Guide: Chapter 4. Building RPM Packages (Engelstalig)
- RPM-manpage (Engelstalig)
- Homepage van de RPM Package Manager (Engelstalig)
- Het samenstellen van RPM's (Engelstalig)
- Bailey, Ed, 2000: Maximum RPM, een verouderde, maar populaire referentie. (Engelstalig)
- Package File Format - Linux Standards Base (Engelstalig)