RPM

Ein RPM, was ist das? Wie gehe ich mit RPM-Dateien um? Hier alle wichtigen Informationen rund um RPM:

Buchtipps
Maximum RPM von Edward C. Bailey (erschienen im Sams-Verlag, ISBN: 978-0672311055)
Maximum RPM
Red Hat RPM Guide von Eric Foster-Johnson (erschienen im Wiley & Sons-Verlag, ISBN: 978-0764549656)
Red Hat RPM Guide

RPM, der "Red Hat Package Manager" - von openSUSE, Mageia und anderen Distributionen - sowie inzwischen etwa seit dem Jahr 2000 allgemein (zur besseren Förderung der Open-Source-Gesellschaft) - nur noch als "RPM Package Manager" bezeichnet - ist und bleibt eine Entwicklung von Red Hat. RPM ist Open-Source und unterliegt der GNU General Public License und wird in der Entwicklung dabei auch von anderen Distributoren (z.B. Mageia) unterstützt. Mehr zu RPM selbst findet sich auf der offiziellen Homepage bzw. auf der Homepage zu RPM5.

Sehr empfehlenwert ist beim Problemen auch die FAQ-Seite, die Hinweise, Kommentare, Links und viele Antworten zu häufigeren Fragen und Problemen enthält. Nicht aus dem Auge verlieren sollte man, wie eine defekte bzw. beschädigte RPM-Datenbank in den meisten Fällen einfach repariert werden kann - und zwar ohne eine Neuinstallation!

Für die Entwicklung von RPM, die 1996 begann, finden sich auf RPM Project News weiterführende Informationen sowie Dokumentationen, Wikis und Status-Meldungen über die aktuelle und zukünftige Entwicklung von RPM.

Mit diesem leistungsfähigen, Kommandozeilen-gesteuerten Paketmanagementsystem, lassen sich Softwarepakete, sogenannte RPMs bzw. RPM-Dateien, installieren, deinstallieren, überprüfen, abfragen und aktualisieren. Jedes Softwarepaket besteht aus einem Archiv aus Dateien sowie Informationen über das Paket selbst, wie z.B. die Version, eine Beschreibung und ähnliches.

RPM ist sehr leistungsfähig und hat viele Verwendungs- und Anwendungsmöglichkeiten, dennoch möchte ich hier nur auf die grundlegenden RPM-Befehle für Installieren, Deinstallieren, Aktualisieren, Abfragen, Auflisten und Überprüfen von RPM-Paketen auf dem System beschränken:

Um ein RPM-Paket zu installieren, können z.B. nachfolgende Befehle verwendet werden. Zu beachten ist, dass ein RPM-Paket immer eine Namensgebung wie "foo-2.0.9-4.i386.rpm" haben, welche den Paket-Namen (foo), die Version (2.0.9), das Release (4) und die Architektur (i386) enthalten. Auch können das HTTP- und FTP-Protokoll verwendet werden, um enfernte RPMs zu installieren und abzufragen.

tux:~ # rpm -ivh foo-2.0.9-4.i386.rpm
tux:~ # rpm -i ftp://ftp.redhat.com/pub/redhat/linux/RPMS/foo-1.0.2-5.i386.rpm
tux:~ # rpm -i http://updates.redhat.com/9/en/os/i386/mutt-1.4.1-3.3.i386.rpm

Deinstallieren lassen sich RPM-Pakete so, wie es unten gezeigt wird. Hier wird allerdings nur der Paketname (und optional die Version mit Release) verwendet, nicht aber der komplette Dateiname wie bei der Installation:

tux:~ # rpm -e foo
tux:~ # rpm -e mutt-1.4.1-3.3

Folgendes kann verwendet werden, um RPM-Pakete zu aktualisieren. Dabei wird automatisch die alte Version des Programmes deinstalliert und die neue Version installiert. Es ist immer sicher, "rpm -Uvh" zum Installieren und Upgraden von Paketen verwenden, da es auch funktioniert, wenn bisher noch keine vorhergehende Version eines Programmes installiert war. Natürlich können auch hier entfernte Dateien über HTTP und FTP verwendet werden, um Pakete upzugraden.

tux:~ # rpm -Uvh foo-2.0.9-4.i386.rpm
tux:~ # rpm -Uvh ftp://ftp.redhat.com/pub/redhat/linux/RPMS/foo-1.0.2-5.i386.rpm
tux:~ # rpm -Uvh http://updates.redhat.com/9/en/os/i386/mutt-1.4.1-3.3.i386.rpm

Möchte man alle installierte RPM-Pakete auf dem Linux-System auflisten, so geht das mit dem nachfolgenden Befehl. Da die RPMs leider unsortiert aufgelistet werden, empfiehlt sich eine Sortierung mit "sort":

tux:~ # rpm -qa
tux:~ # rpm -qa | sort

Um ein bestimmtes RPM-Paket abzufragen, geht man wie folgt vor. Dabei wird anschließend der Paketname, die Version und die Release-Nummer ausgegeben, wenn das Paket installiert ist. Diesen Befehl verwendet man um zu prüfen, ob ein Paket auf dem System installiert oder nicht installiert ist.

tux:~ # rpm -q foo

Um Informationen zu einem bestimmten RPM-Paket anzuzeigen kann man dies so machen, wie es unten gezeigt ist. Dabei werden Informationen über den Paketnamen, die Version, die Release-Nummer sowie eine Beschreibung und weitere detailiertere Informationen über das Paket ausgegeben.

tux:~ # rpm -qi foo

Damit Dateien in einem installierten RPM-Paket aufgelistet werden, sollte man nachfolgen Befehl verwenden. Dieser Befehl funktioniert nur, wenn das RPM-Paket bereits installiert ist.

tux:~ # rpm -ql foo
tux:~ # rpm -qvl foo

Welche Datei zu welchem RPM-Paket gehört, lässt sich so herausfinden:

tux:~ # rpm -qf /bin/uname
coreutils-4.5.12-1
tux:~ # 

Damit Dateien in einer RPM-Datei aufgelistet werden, sollte man nachfolgen Befehl verwenden. Für diesen Befehl ist eine RPM-Datei zwingend notwendig und es ist nicht von Belange, ob das RPM installiert ist oder nicht. Selbstverständlich kann auch hier wieder auf entfernte RPMs über HTTP bzw. FTP zugegriffen werden:

tux:~ # rpm -qpl foo-2.0.9-4.i386.rpm
tux:~ # rpm -qpl ftp://ftp.redhat.com/pub/redhat/linux/RPMS/foo-1.0.2-5.i386.rpm
tux:~ # rpm -qpl http://updates.redhat.com/9/en/os/i386/mutt-1.4.1-3.3.i386.rpm

Um ein installiertes RPM zu überprüfen kann man wie folgt vorgehen. Dabei werden alle Dateien, die die Tests (Größe, Prüfsumme, etc) nicht bestehen, aufgelistet. Wenn eine Datei einen Test nicht besteht, so wird in der Ausgabe genau aufgelistet, warum diese den Test nicht bestanden hat. Dazu werden diese Kürzel verwendet:

S - Dateigröße
M - Dateiberechtigungen (einschließlich Dateityp)
5 - Prüfsumme (md5sum)
L - Symbolischer Link (Symlink)
D - Gerät (Device)
U - Benutzer
G - Gruppe
T - Zeit der letzten Bearbeitung (mtime)

Zum Beispiel sieht das dann so aus:

tux:~ # rpm --verify mutt
S.5....T c /etc/Muttrc
tux:~ # 

Dies zeigt, dass die Datei "/etc/Muttrc" bei diesen Tests fehlgeschlagen ist:

Dateigröße
Prüfsumme (md5sum)
Zeit der letzten Bearbeitung (mtime)

Jedoch teilt das "c" mit, dass es sich um eine Konfigurationsdatei handelt, was die Veränderungen erklärt und rechtfertigt. Andernfalls sollte geschaut werden, warum es Änderungen gab und ob diese erlaubt waren bzw. sind.

Auch lässt sich die Signatur eines RPM-Paktes prüfen. Damit wird die PGP-Signatur des Paketes geprüft um die Herkunft zu bestätigen und ungewollte Manipulationen auszuschließen. Dieser Befehl sollte immer verwendet werden, bevor ein RPM auf dem System installiert wird. Für diese Überprüfung der Signatur muss eine Verschlüsselungssoftware wie GnuPG oder PGP installiert sein, bevor dieser Befehl genutzt werden kann.

tux:~ # rpm --checksig foo

Zum Ausführen der RPM-Befehle, die etwas am System verändern (z.B. durch Installieren, Deinstallieren, Aktualisieren) werden Root-Rechte benötigt, normale Abfragen bzw. Überprüfungen können auch als Benutzer stattfinden.

Wer mehr bzw. viel mehr als diese grundlegenden Dinge mit RPM machen und vielleicht auch eigene RPMs bauen möchte, dem empfehle ich das Buch "Maximum RPM" von Edward C. Bailey (erschienen im Sams-Verlag, ISBN: 978-0672311055) zu lesen. Das Buch ist z.B. bei Amazon in gebundener Fassung erhältlich oder auch bei Red Hat als PDF oder als HTML-Fassung. Das Buch ist allerdings schon bereits 1998 erschienen und wurde mit einer 2. Auflage 2000 erneuert, jedoch greift es auf die älteren RPM-Versionen 2 und 3 zurück.

Für die derzeit aktuelle RPM Version 4 wird das Buch "Red Hat RPM Guide" von Eric Foster-Johnson (erschienen im Wiley & Sons-Verlag, ISBN: 978-0764549656) empfohlen, da "Maximum RPM" eben doch recht veraltet ist. "Red Hat RPM Guide" ist aus dem Jahr 2003 und derzeit nur als gebundenes Buch z.B. bei "Amazon" erhältlich.