SuSE Support-Datenbank

Titel: rpm - Der Paket-Manager der S.u.S.E. Linux

---

Übersicht ---- Stichwortsuche ---- History ---- Versionen ---- Kategorien ---- Alle Artikel
English
---

rpm - Der Paket-Manager der S.u.S.E. Linux

Bezieht sich auf

SuSE Linux: Versionen ab 5.0

rpm - Der Paket-Manager der S.u.S.E. Linux Distribution

Mit der Version 5.0 hat »rpm« (engl. Red Hat Package Manager) Einzug in die S.u.S.E. Linux Distribution gehalten. Damit vereinfacht sich das Paket-Management für alle Beteiligten, die Benutzer, die System-Administratoren und - nicht zuletzt - für die Pakete-Macher. Mittels der mächtigen RPM-Datenbank stehen jederzeit detaillierte Informationen zur installierten Software zur Verfügung.

Im wesentlichen kann rpm in drei Modi agieren: installierbare Pakete aus den unangetasteten Quellen (engl. pristine sources herstellen, diese Pakete installieren bzw. auch wieder sauber de-installieren oder updaten sowie Anfragen an die RPM-Datenbank bzw. an einzelne RPM-Archive richten. Im folgenden werden nur die beiden letzten Punkte besprochen.

Installierbare RPM-Archive sind in einem speziellen binären Format gepackt; die Archive bestehen aus den zu installierenden (Programm-)Dateien und aus verschiedenen Meta-Informationen, die während der Installation von rpm benutzt werden, um das jeweilige Softwarepaket zu konfigurieren, oder die zu Dokumentationszwecken in der RPM-Datenbank abgelegt werden. RPM-Archive haben die Dateinamen-Endung .rpm.

Pakete verwalten: Installieren, Updaten und De-installieren

Im Normalfall ist das Installieren eines RPM-Archivs denkbar einfach:

        rpm -i PAKET.rpm

Mit diesem Standardbefehl wird ein Paket aber nur dann installiert, wenn die "Abhängigkeiten" erfüllt sind und wenn es zu keinen "Konflikten" kommen kann. rpm fordert per Fehlermeldung die Pakete an, die zum Erfüllen der Abhängigkeiten notwendig sind. Die Datenbank wacht im Hintergrund darüber, daß es zu keinen Konflikten kommen kann: eine Datei darf in der Regel nur zu einem Paket gehören. Mit verschiedenen Optionen kann man sich über diese Regel hinwegsetzen - wer dies tut, der sollte man aber genau wissen, was er tut, da er damit eventuell die Updatefähigkeit aufs Spiel setzt.

Interessant ist auch die Option -U bzw. --upgrade, um ein Paket zu aktualisieren. Dadurch wird eine ältere Version des gleichen Pakets gelöscht und dann die neue Version installiert. - Gleichzeitig versucht rpm, sorgfältig mit den Konfigurationsdateien umzugehen, wobei die folgende Strategie verfolgt wird:

Nach jeden Update müssen Sie die von rpm angelegten Sicherungskopien mit der Erweiterung .rpmorig kontrollieren; das sind Ihre alten Konfigurationsdateien. Falls erforderlich, übernehmen Sie bitte Ihre Anpassungen aus den .rpmorig-Dateien in die neuen Konfigurationsdateien, und löschen Sie dann die alten Dateien mit der Erweiterung .rpmorig.

Wenn ein Paket entfernt werden soll, geht man ähnlich geradlinig vor:

        rpm -e PAKET

rpm wird ein Paket aber nur dann entfernen, wenn keine Abhängigkeiten mehr bestehen; so ist es z. B. nicht möglich, Tcl/Tk zu löschen, solange noch irgendein Programm diese Programme zum Laufen benötigen - auch darüber wacht RPM mithilfe der Datenbank.

Falls in einem Ausnahmefall eine derartige Lösch-Operation nicht möglich sein sollte, obwohl keine Abhängigkeiten mehr bestehen, dann kann es hilfreich sein, die RPM-Datenbank mittels der Option --rebuilddb neu aufzubauen; vgl. unten die Anmerkungen zur RPM-Datenbank.

Anfragen stellen

Mit der Option -q (engl. query) leitet man Anfragen ein. Damit ist es sowohl möglich die RPM-Archive selbst zu durchleuchten (Option -p PAKET_DATEI) als auch die RPM-Datenbank zu befragen. Die Art der Information kann man mit den zusätzlichen Switches auswählen:

-i
Paket-Informationen anzeigen
-l
Dateiliste des Pakets anzeigen
-f DATEI+
Anfrage nach Paket, das die Datei DATEI besitzt; DATEI muß mit vollem Pfad angegeben werden!
-s
Status der Dateien anzeigen (impliziert -l)
-d
Nur Dokumentationsdateien auflisten (impliziert -l)
-c
Nur Konfigurationsdateien auflisten (impliziert -l)
--dump
Alle überprüfbaren Infos zu jeder Datei anzeigen (mit -l, -c oder -d benutzen!)
--provides
Fähigkeiten des Pakets auflisten
--requires, -R
Paket-Abhängigkeiten ausgeben
--scripts
Die diversen (De-)Installations-Skripte ausgeben

Der Befehl

        rpm -q -i rpm

z.B. gibt die folgende Information aus:

Name        : rpm                     Distribution: S.u.S.E Linux
Version     : 2.4.1                         Vendor: S.u.S.E. GmbH
Release     : 1                         Build Date: Wed Jun 18 14:46:53 1997
Install date: Sat Jun 21 12:01:21 1997  Build Host: Fibonacci.suse.de
Group       :                           Source RPM: rpm-2.4.1-1.src.rpm
Size        : 1365662
Packager    : feedback@suse.de
URL         : (none)
Summary     : Red Hat Package Manager
Description :
RPM is a powerful package manager, which can be used to build, install,
query, verify, update, and uninstall individual software packages. A
package consists of an archive of files, and package information,
including name, version, and description.

Die Option -f führt nur dann zum Ziel, wenn man den kompletten Dateinamen, einschließlich des Pfades, kennt; es dürfen beliebig viele zu suchenden Dateinamen angegeben werden, z. B.:

        rpm -q -f /bin/rpm /usr/bin/wget

führt zu dem Ergebnis:

        rpm-2.4.1-1
        wget-1.4.5-2

Kennt man nur einen Teil des Dateinamens, so muß man sich mit einem Shell-Skript der folgenden Art behelfen (den gesuchten Dateinamen als Parameter beim Aufruf des Skripts angeben):

        #! /bin/sh
        
        for i in `rpm -q -a -l | grep  $1 `; do
            echo »$i« ist in Paket:
            rpm -q -f $i
            echo ""
        done

Anhand der Datenbank lassen sich auch Überprüfungen durchführen; eingeleitet werden diese Vorgänge mit der Option -V (gleichbedeutend mit -y oder --verify). Damit veranlaßt man rpm, all die Dateien anzuzeigen, die sich im Vergleich zur ursprünglichen Version, wie sie im Paket enthalten war, geändert hat. rpm stellt dem eigentlichen Dateinamen bis zu 8 Buchstaben voran, die auf folgende Änderungen hinweisen:

5
MD5-Prüfsumme
S
Dateigröße
L
Symbolischer Link
T
Modification Time
D
Device
U
Benutzer (user)
G
Gruppe (group)
M
Modus (einschl. Rechte und Typus)

Bei Konfigurationsdateien wird zusätzlich ein c ausgegeben. Beispiel, falls etwas an /etc/wgetrc aus dem wget geändert wurde:

        rpm -V wget
        S.5....T c /etc/wgetrc

Zur Datenbank

Die Dateien der RPM-Datenbank liegen unter /var/lib/rpm. Bei einer /usr-Partition von 500 MB kann die Datenbank durchaus 20 MB Plattenplatz beanspruchen; insb. nach einem kompletten Update. Falls die Datenbank über Gebühr groß erscheint, ist es meist hilfreich, mit der Option --rebuilddb eine neue Datenbank von der existierenden zu erstellen; es kann nichts schaden, vor einem solchen "Rebuild" eine Kopie der existierenden aufzubewahren.

Weiterhin legt das cron-Skript cron.daily täglich eine gepackte Kopie der Datenbank unter /var/adm/backup/rpmdb an, falls Änderungen vorgefallen waren; die Anzahl der Datenbankkopien wird durch die Variable MAX_RPMDB_BACKUPS (Standard: 5) in der /etc/rc.config vorgegeben wird; es ist mit bis zu 3 MB pro Backup zu rechnen (bei einer 500MB großen /usr). Dieser Platzverbrauch ist unbedingt bei Bestimmung der Größe der Root-Partition zu berücksichtigen, falls man für /var keine eigene Partition vorsehen will.

Tools für RPM-Archive

Der Midnight Commander (mc) ist von Hause aus in der Lage, den Inhalt eines RPM-Archivs anzuzeigen bzw. Teile daraus zu kopieren. Er bildet ein solches Archiv als ein virtuelles Dateisystem ab, so daß alle gewohnten Menüpunkte des Midnight Commander - wenn sinnvoll - zur Verfügung stehen: Die Kopfzeilen-Informationen der "Datei" HEADER kann man sich mit F3 ansehen; mit den Cursor-Tasten und Enter läßt sich durch die Struktur des Archivs "browsen", um bei Bedarf mit F5 Komponenten herauszukopieren. - Übrigens, dies ist etwas, das der Emacs nicht beherrscht, bislang ;-)

Mit Alien (alien) ist es möglich, die Paketformate der verschiedenen Distributionen zu konvertieren. So kann man versuchen, alte TGZ-Archive vor dem Installieren nach RPM umzuwandeln, damit während der Installation die RPM-Datenbank mit den Paket-Informationen versorgt wird. Aber Achtung: alien ist ein Perl-Skript und befindet sich nach Angaben der Programm-Autoren noch in einem Alpha-Stadium -- wenngleich es z.Zt. (5.2) bereits die Version 5.19 erreicht hat.

---

Siehe auch:

---

Stichwörter: RPM, PAKETE, PAKETMANAGER, PACKAGE, INSTALL, UPDATE

---

Kategorien: Paket-Installation

---

Feedback willkommen: Send Mail to ke@suse.de (Geben Sie bitte folgendes Stichwort an: SDB-ke_rpm)

---

Übersicht ---- Stichwortsuche ---- History ---- Versionen ---- Kategorien ---- Alle Artikel
English
---

SDB-ke_rpm, Copyright SuSE GmbH, Nuremberg, Germany - Version: 22. Oct 1997
Impressum - Zuletzt generiert: 24. Feb 1999 11:35:35 by maddin with sdb_gen 1.00.0