RPM

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche

RPM (Red Hat Package Manager) ist ein Paketmanagementsystem für die Shell, welches von Red Hat entwickelt wurde. Es unterstützt ein effektives Versionsmanagement, Abhängigkeiten und eine saubere und vollständige Deinstallation von Red Hat Paketen (RP) und bildet das Grundwerk (Backend) von Yum. Das Herzstück von RPM bildet seine Datenbank.


Inhaltsverzeichnis

Typische Anwendungsfälle

RPM unterstützt 5 Anwendungsmöglichkeiten:

Paketeinrichtung, -entfernung, -abfrage, -prüfung und -versionsmanipulation

Wenn bei einer rpm-Aktion ein rpm-Paket als Argument angegeben werden soll, kann rpm auch mit URLs umgehen - statt foor-barr.rpm geht also auch http://www.xyz.de/foo-bar.rpm.

Abfragen, ob ein Paket installiert ist:

rpm -q paketname

Installation eines oder mehrerer Pakete:

rpm -ihv paketname1-<version>.rpm paketname2-<version>.rpm

Aktualisierung eines oder mehrerer Pakete:

rpm -Uhv paketname1-<version>.rpm paketname2-<version>.rpm

oder

rpm -Fhv paketname1-<version>.rpm paketname2-<version>.rpm
Anmerkung Anmerkung: Die Option -F (freshens) aktualisiert nur bereits installierte Pakete, sinnvoll wenn eine der Paketdateien versehentlich gelöscht oder korrumpiert wurde. Die Option -U (upgrade) installiert ein Paket, wenn es keine ältere Version gibt. Wenn das Paket bereits vorhanden ist, wird es entfernt bevor das neue Paket eingerichtet wird.

Importieren eines GPG-Schlüssels:

rpm --import <GPG-SCHLÜSSEL>

Abfrage aller importierten GPG-Schlüssel:

$ rpm -qa gpg-pubkey

Deinstallieren eines oder mehrerer Pakete:

rpm -e paketname1 paketname2

Downgrade zu einer geringeren Versionsnummer:

rpm -Uhv --oldpackage paketname1-<version>.rpm 
Anmerkung Anmerkung: Es wird des öfteren anstatt --oldpackage die option --force in Beschreibungen erwähnt, jedoch dient --force auch anderen Diensten. Die Option --force ignoriert auch Abhängigkeiten, was die Option --oldpackage nicht macht.

Neuinstallation eines bereits installierten Paketes (gleiche Version)

rpm -ivh --replacepkgs Paketname-<version>.rpm

RPM-Datenbank-Abfragen

Die hier aufgeführten Aktionen eignen sich zur Abfrage von der Paketinformationen, die RPM in einer Datenbank speichert. Will man aber statt dessen die entsprechenden Informationen über ein noch nicht installiertes Paket erhalten, muss die Option -p hinzugefügt werden - statt rpm -qa also rpm -qap.

Informationen zu mehreren oder allen Paketen abrufen

Paketnamen aller eingerichteten Pakete ausgeben:

rpm -qa

Anzahl aller eingerichteten Pakete ausgeben:

rpm -qa | wc -l

Liste aller Paketnamen der momentan eingerichteten Pakete abspeichern:

rpm -qa > /backup/installed-software.log


Anmerkung Anmerkung:
Mit der Liste lässt sich die Paketliste verschiedener Rechner angleichen:
$ yum -y install $(cat /backup/installed-software.log)

Paketnamen nach Einrichtungsdatum ausgeben:

rpm -qa -last

Die ersten 10 eingerichteten Pakete ausgeben:

rpm -qa -last | tail

Die letzten 10 eingerichteten Pakete ausgeben:

rpm -qa -last | head


Pakete eines bestimmten Anbieters zeigen:
Als Beispiel wir hier der Paketanbieter RPM Fusion genutzt.

$ rpm -qa --queryformat '%{Vendor} %{name}-%{version}\n' | grep RPM  | sort -k3

Gibt einer Liste alle Paketnamen und Paketversionen aus, die Ausgabe wird durch grep und sort gefiltert. Es werden nur Pakete des Anbieters RPM Fusion ausgegeben und die Ausgabe der Paketnamen ist alphabetisch sortiert.

Die 10 größten Pakete anzeigen:

$ rpm -qa --queryformat '%10{size} %{name}-%{version}\n' | sort -n | tail

Informationen zu einzelnen Paketen abrufen

Informationen über ein installiertes Paket anzeigen lassen:

rpm -qi Paketname

Nach einem Paket suchen:

rpm -qa | grep Paketname 

Dateiliste eines installierten Paketes anzeigen:

rpm -ql Paketname

Nachfrage zu welchem Paket eine Datei gehört:

rpm -qf /voller/Pfad/Datei

Nur die Dokumentation eines Paketes anzeigen lassen:

rpm -qld Paketname

Nur die Konfigurationsdateien Paketes anzeigen lassen:

rpm -qlc Paketname

Den ChangeLog eines Paketes anzeigen lassen:

rpm -q --changelog Paketname

Abfrage wann ein Paket zuletzt installiert/aktualisiert wurde:

rpm -q --last Paketname

Abhängigkeiten eines Paketes ausgeben:

rpm -q --requires $Paketname

Abhängigkeiten ignorieren

Achtung Achtung: Die folgenden Optionen sollten nur von erfahrenen Benutzern und nur zu Testzwecken verwendet werden.

Abhängigkeiten ignorieren

--nodeps

Abhängigkeiten ignorieren, notfalls vorhandene Pakete ersetzen

--force

Datenbankprobleme beheben

RPM 4.9.x

Seit Fedora 15 wird RPM 4.9.x genutzt und damit steht zur Pflege der Datenbank /usr/bin/rpmdb als Shell-Programm zur Verfügung. rpmdb ist im Paket rpm enthalten. Die Manpage von rpmdb ist ein wenig dürftig.

Das Programm bietet 2 wesentliche Funktionen:
Erstellung der Datenbank und Erneuerung der Datenbank. Es spielt keine Rolle ob diese Funktionen über das Programm rpm oder rpmdb aufgerufen werden. Erfolgt der Aufruf über rpm wird die angeforderte Funktion von rpm an rpmdb weiter geleitet.

$ sudo rpm --rebuilddb

und

$ sudo rpmdb --rebuilddb

erzielen also das selbe Ergebnis.

Für beide Funktionen sind Root-Rechte erforderlich wenn an der System-Datenbank Änderungen vorgenommen werden sollen.

--initdb - Erstellt eine Datenbank - überschreiben ist keine Option
--rebuilddb - Erneuert die Datenbank

Zusätzliche Angaben:

-v verbose
--dbpath $Verzeichnisname
--root $Verzeichnisname

Beispiel:

$ rpm --initdb -v --dbpath ~/testdb/

erstellt in $Heimverzeichnis/testdb die RPM Datenbankstruktur. Natürlich müsste testdb vorher mit mkdir erstellt werden.

RPM < 4.9.x

Vor Ausgabe 4.9.x:
Sollte die Abfrage von rpm nicht mehr reagieren, kann versucht werden die Datenbank zu erneuern:

$ rm -f /var/lib/rpm/__* ; rpm -vv --rebuilddb

Interne verwandte Artikel

Weblinks