Red Hat Enterprise Linux 3: Handbuch zur System-Administration | ||
---|---|---|
Zurück | Kapitel 16. Paketverwaltung mit RPM | Nach vorne |
RPM bietet fünf grundlegende Funktionen (wobei die Erstellung von Paketen nicht inbegriffen ist): Installieren, Deinstallieren, Aktualisieren, Anfragen und Prüfen. In diesem Kapitel werden die einzelnen Funktionen näher beschrieben. Detailliertere Informationen und Optionen finden Sie unter rpm --help oder Abschnitt 16.5.
Bevor Sie ein RPM verwenden, müssen Sie wissen, wo diese zu finden sind. Eine Suche im Internet liefert viele RPM-Repositories. Wenn Sie allerdings RPM-Pakete suchen, die von Red Hat erstellt wurden, können Sie diese an folgenden Orten finden:
Red Hat Enterprise Linux CD-ROMs
Red Hat Errata-Seite unter http://www.redhat.com/apps/support/errata/
Red Hat FTP Mirror-Site unter http://www.redhat.com/download/mirror.html
Red Hat Network — Siehe Kapitel 18 für Weiteres zu Red Hat Network
RPM-Pakete besitzen üblicherweise Dateinamen wie foo-1.0-1.i386.rpm, die den Paketnamen (foo), die Version (1.0), die Release-Nummer (1) und die Systemarchitektur (i386) enthalten. Zum Installieren eines Pakets müssen Sie sich lediglich als root anmelden und den folgenden Befehl am Shell-Prompt eingeben:
rpm -Uvh foo-1.0-1.i386.rpm |
Ist die Installation erfolgreich, wird Folgendes ausgegeben:
Preparing... ########################################### [100%] 1:foo ########################################### [100%] |
RPM gibt den Paketnamen und eine Reihe von Hash-Zeichen auf dem Bildschirm aus, um den Installationsfortschritt anzuzeigen.
Beginnend mit Version 4.1 von RPM wird die Signatur eines Paketes bei der Installation oder Aktualisierung eines Paketes geprüft. Schlägt die Prüfung der Signatur fehl, erscheint eine Fehlermeldung, die wie folgt aussehen kann:
error: V3 DSA signature: BAD, key ID 0352860f |
Handelt es sich um eine neue Signatur, die nur im Header-Bereich vorkommt, erscheint eine Fehlermeldung, die wie folgt aussehen kann:
error: Header V3 DSA signature: BAD, key ID 0352860f |
Haben Sie nicht den richtigen Schlüssel zur Prüfung der Signatur installiert, erscheint in der Nachricht NOKEY wie z.B.:
warning: V3 DSA signature: NOKEY, key ID 0352860f |
Unter Abschnitt 16.3 finden Sie weitere Informationen zur Prüfung einer Paketsignatur.
![]() | Anmerkung |
---|---|
Zur Installation eines Kernel-Pakets sollten Sie dagegen rpm -ivh verwenden. Weitere Details finden Sie unter Kapitel 39. |
Die Installation von Paketen ist zwar ein sehr einfacher Vorgang, es können jedoch trotzdem Fehler auftreten:
Falls das Paket derselben Version bereits installiert wurde, erscheint folgende Anzeige:
Preparing... ########################################### [100%] package foo-1.0-1 is already installed |
Wenn Sie das Paket dennoch installieren möchten und die gleiche Version, die Sie installieren möchten, bereits installiert ist, können Sie die Option --replacepkgs verwenden, mit der RPM angewiesen wird, den Fehler zu ignorieren:
rpm -ivh --replacepkgs foo-1.0-1.i386.rpm |
Diese Option ist vor allem dann sehr nützlich, wenn die von RPM installierten Dateien gelöscht wurden oder wenn die ursprünglichen Konfigurationsdateien von RPM installiert werden sollen.
Wenn Sie versuchen, ein Paket zu installieren, das eine bereits durch ein anderes Paket installierte Datei enthält, wird folgende Meldung ausgegeben:
Preparing... ########################################### [100%] file /usr/bin/foo from install of foo-1.0-1 conflicts with file from package bar-2.0.20 |
Wenn RPM diesen Fehler ignorieren soll, hängen Sie die Option --replacefiles an den Befehl an:
rpm -ivh --replacefiles foo-1.0-1.i386.rpm |
RPM-Pakete können von anderen Paketen "abhängig" sein, d.h. sie benötigen andere Pakete, um ordnungsgemäß installiert werden zu können. Falls Sie versuchen, ein Paket zu installieren, für das eine solche ungelöste Abhängigkeit besteht, erscheint folgende Anzeige:
Preparing... ########################################### [100%] error: Failed dependencies: bar.so.2 is needed by foo-1.0-1 Suggested resolutions: bar-2.0.20-3.i386.rpm |
Installieren Sie ein Paket von den Red Hat Enterprise Linux CD-ROMs, wird normalerweise vorgeschlagen, dass das Paket die Abhängigkeit auflösen. Suchen Sie dieses Paket in den Red Hat Enterprise Linux CD-ROMs oder aus der Red Hat FTP-Site (oder Mirror) und fügen Sie es dem Befehl hinzu:
rpm -ivh foo-1.0-1.i386.rpm bar-2.0.20-3.i386.rpm |
Ist die Installation beider Pakete erfolgreich, erscheint ein Meldung ähnlich Folgender:
Preparing... ########################################### [100%] 1:foo ########################################### [ 50%] 2:bar ########################################### [100%] |
Wird kein Paket zur Lösung der Abhängigkeit vorgeschlagen, können Sie es mit der Option --redhatprovides versuchen, um zu bestimmen in welchem Paket die gewünschte Datei enthalten ist. Damit Sie diese Optionen verwenden können, muss das Paket rpmdb-redhat installiert sein.
rpm -q --redhatprovides bar.so.2 |
Befindet sich das Paket mit bar.so.2 in der installierten Datenbank des Pakets rpmdb-redhat, wird der Name des Pakets angezeigt:
bar-2.0.20-3.i386.rpm |
Falls Sie jedoch mit der Installation fortfahren möchten (was nicht zu empfehlen ist, da das Paket vermutlich nicht korrekt ausgeführt werden kann), geben Sie an der Befehlszeile --nodeps ein.
Das Deinstallieren von Paketen ist ebenso einfach wie das Installieren. Geben Sie am Shell-Prompt Folgendes ein:
rpm -e foo |
![]() | Anmerkung |
---|---|
Hier wurde der Paketname foo und nicht der Name der ursprünglichen Paketdatei foo-1.0-1.i386.rpm verwendet. Um ein Paket zu deinstallieren, müssen Sie foo mit dem tatsächlichen Namen des ursprünglichen Pakets ersetzen. |
Beim Deinstallieren eines Pakets kann ein Abhängigkeitsfehler auftreten, wenn ein anderes installiertes Paket von diesem Paket abhängt. Beispiel:
Preparing... ########################################### [100%] error: removing these packages would break dependencies: foo is needed by bar-2.0.20-3.i386.rpm |
Wenn Sie möchten, dass RPM diesen Fehler ignoriert und das Paket dennoch deinstalliert (was ebenfalls keine gute Idee ist, da das hiervon abhängige Paket vermutlich nicht korrekt funktionieren wird), hängen Sie die Option --nodeps an den Befehl an.
Das Aktualisieren von Paketen erfolgt ähnlich wie das Installieren. Geben Sie den folgenden Befehl am Shell-Prompt ein:
rpm -Uvh foo-2.0-1.i386.rpm |
Was Sie hier nicht sehen, ist, dass RPM automatisch alte Versionen des foo Pakets deinstalliert. Sie können jedoch auch die Funktion -U zum Installieren von Paketen verwenden, da sie auch funktioniert, wenn keine älteren Versionen des zu installierenden Pakets vorhanden sind.
Da RPM ein intelligentes Aktualisieren von Paketen mit Konfigurationsdateien durchführt, wird möglicherweise folgende Meldung angezeigt:
saving /etc/foo.conf as /etc/foo.conf.rpmsave |
Diese Meldung bedeutet, dass Ihre Änderungen an der Konfigurationsdatei mit der neuen Konfigurationsdatei des Pakets nicht "vorwärtskompatibel" sind, und RPM Ihre ursprüngliche Datei gespeichert und eine neue installiert hat. Sie sollten die Differenzen zwischen den beiden Konfigurationsdateien überprüfen und diese so bald wie möglich beheben. Andernfalls besteht das Risiko, dass Ihr System nicht korrekt funktioniert.
Das Aktualisieren ist im Prinzip eine Kombination der Vorgänge Deinstallieren und Installieren. Bei einer RPM-Aktualisierung können daher auch Deinstallations- und Installationsfehler auftreten. Wenn RPM vermutet, dass Sie versuchen, ein Paket mit einer älteren Version zu aktualisieren, erscheint folgende Meldung:
package foo-2.0-1 (which is newer than foo-1.0-1) is already installed |
Um mit RPM dennoch eine "Aktualisierung" durchzuführen, hängen Sie die Option --oldpackage an den Befehl an:
rpm -Uvh --oldpackage foo-1.0-1.i386.rpm |
Das Auffrischen eines Pakets ist dem Aktualisieren sehr ähnlich. Geben Sie den folgenden Befehl am Shell-Prompt ein:
rpm -Fvh foo-1.2-1.i386.rpm |
Die Option Auffrischen von RPM überprüft die Versionen der in der Befehlszeile angegebenen Pakete und vergleicht sie mit den Versionen der bereits in Ihrem System installierten Pakete. Wenn eine neuere Version eines bereits installierten Pakets von der Option Auffrischen bearbeitet wird, aktualisiert RPM dieses auf die neuere Version. Mit der Option Auffrischen von RPM kann jedoch kein Paket installiert werden, wenn nicht ein bereits zuvor installiertes Paket des gleichen Namens vorhanden ist. Dies ist ein wesentlicher Unterschied zur Funktion Aktualisieren von RPM, da bei einer Aktualisierung in jedem Fall Pakete installiert werden, gleichgültig, ob eine ältere Version des Pakets bereits installiert wurde.
Die Option Auffrischen von RPM funktioniert bei einzelnen Paketen oder bei Paketgruppen. Wenn Sie eine große Anzahl verschiedener Pakete heruntergeladen haben und nur die Pakete aktualisieren möchten, die bereits in Ihrem System installiert sind, dann sollten Sie die Funktion des Auffrischens verwenden. Hierbei ist es nicht notwendig, dass Sie unerwünschte Pakete aus der Gruppe entfernen, die Sie zuvor mit dem RPM heruntergeladen haben.
In diesem Fall können Sie den folgenden Befehl eingeben:
rpm -Fvh *.rpm |
RPM wird nun automatisch nur die Pakete aktualisieren, die bereits installiert sind.
Anfragen an die Datenbank der installierten Pakete werden mit rpm -q durchgeführt. Der Befehl rpm -q foo gibt den Namen sowie Versions- und Release-Nummern des installierten Pakets foo aus:
foo-2.0-1 |
![]() | Anmerkung |
---|---|
Hier wurde der Paketname foo verwendet. Um ein Paket anzufragen, müssen Sie foo mit dem tatsächlichen Namen des Pakets ersetzen. |
Statt einen Paketnamen festzulegen, können Sie auch folgende Optionen mit -q verwenden, um anzugeben, welche Pakete Sie abfragen möchten. Diese Optionen heißen Paketspezifizierungsoptionen.
-a Anfrage zu allen derzeit installierten Paketen.
-f <Datei> Anfrage zu welchem Paket <Datei> gehört. Bei der Angabe einer Datei müssen Sie den vollständigen Pfad angeben (zum Beispiel /usr/bin/ls).
-p <packagefile> Anfrage an die nicht installierte Paketdatei <packagefile>.
Es gibt eine Reihe von Möglichkeiten, um festzulegen, welche Informationen über angefragte Pakete angezeigt werden. Mit den folgenden Optionen können Sie die gewünschten Informationen auswählen. Diese Optionen heißen Optionen zur Informationsauswahl.
-i zeigt Paketinformationen, zum Beispiel Name, Beschreibung, Release-Nummer, Größe, Erstellungsdatum, Installationsdatum, Händler und verschiedene andere Informationen.
-l zeigt eine Liste der Dateien an, die im Paket enthalten sind.
-s zeigt den Status aller Dateien des Pakets an.
-d zeigt eine Liste der als Dokumentationen gekennzeichneten Dateien an (man-Seiten, info-Seiten, README- Dateien usw.).
-c zeigt eine Liste der als Konfigurationsdateien gekennzeichneten Dateien an. Dies sind die Dateien, die Sie nach der Installation bearbeiten, um das Paket an Ihr System anzupassen (zum Beispiel sendmail.cf, passwd, inittab etc.).
Zu den Optionen für die Anzeige von Dateilisten können Sie in der Befehlszeile -v hinzufügen, um die Listen im gleichen Format wie bei der Option ls -l anzuzeigen.
Beim Überprüfen eines Pakets werden die Angaben zu Dateien, die aus einem Paket installiert wurden, mit den Angaben aus dem ursprünglichen Paket verglichen. Bei einer Überprüfung werden u.a. folgende Parameter verglichen: Größe, MD5-Summe, Berechtigungen, Typ, Eigentümer und Gruppe.
Mit dem Befehl rpm -V werden Pakete überprüft. Zum Angeben der zu prüfenden Pakete können Sie Paketauswahloptionen verwenden, die für Anfragen zur Verfügung stehen. Ein einfaches Anwendungsbeispiel ist rpm -V foo. Dieser Befehl überprüft, ob sich alle Dateien im Paket foo noch in dem Zustand befinden, den sie ursprünglich zum Zeitpunkt der Installation hatten. Beispiel:
So prüfen Sie ein Paket, das eine bestimmte Datei enthält:
rpm -Vf /bin/vi |
So prüfen Sie ALLE installierten Pakete:
rpm -Va |
So prüfen Sie ein installiertes Paket gegenüber einer RPM-Paketdatei:
rpm -Vp foo-1.0-1.i386.rpm |
Dieser Befehl kann nützlich sein, wenn Sie vermuten, dass Ihre RPM-Datenbank beschädigt ist.
Wenn alles überprüft und für korrekt befunden wurde, erfolgt keine weitere Ausgabe. Falls Abweichungen festgestellt wurden, werden diese angezeigt. Das Ausgabeformat besteht aus einer Zeichenkette mit acht Zeichen (c kennzeichnet eine Konfigurationsdatei). Jedes der acht Zeichen steht für das Vergleichsergebnis eines Attributs der Datei mit dem aufgezeichneten Wert für dieses Attribut in RPM-Datenbank. Ein einzelner Punkt . bedeutet, dass der Test bestanden wurde. Die folgenden Zeichen kennzeichnen Fehler bei bestimmten Tests:
5 — MD5 Prüfsumme
S — Dateigröße
L — symbolischer Link
T — Dateibearbeitungszeit
D — Gerät
U — Benutzer
G — Gruppe
M — Modus (einschließlich Berechtigungen und Dateityp)
? — nicht lesbare Datei
Wenn eine Ausgabe angezeigt wird, entscheiden Sie, ob Sie das Paket entfernen oder neu installieren oder aber das Problem auf andere Weise lösen möchten.
Zurück | Zum Anfang | Nach vorne |
Paketverwaltung mit RPM | Nach oben | Überprüfen der Signatur eines Pakets |