Next: shutdown
Up: Die Kommandos für root
Previous: rmmod
Subsections
rpm (RedHat Packet Manager)
installiert und verwaltet Softwarepakete
rpm Optionen
Der RedHat Packet Manager rpm installiert neue
Softwarepakete im RPM-Format auf einem Linux-System oder entfernt vorher
installierte Pakete vollständig.
rpm stellt bei der Installation neuer Pakete die Integrität
der bereits installierten Pakete sicher. rpm überprüft vor
der Installation eines neuen Pakets die durch Abhängigkeit von anderen
Paketen gegebenen Voraussetzungen. Beim Update eines installierten
Pakets auf eine neuere Version werden die Konfigurationsdateien des
alten Pakets automatisch gesichert.
Das Programm glint bietet eine komfortable
Benutzerschnittstelle zu den wesentlichen Funktionen von
rpm. Eine Einführung in die Benutzung von rpm
auf der Kommandozeile ist im Abschnitt über
Softwaremanagement zu finden.
Über die für die Systemverwaltung notwendige Funktionalität hinaus
kann rpm dazu benutzt werden, neue Softwarepakete im
RPM-Format zu erzeugen.
Für die unterschiedlichen Aufgaben benutzt rpm jeweils
bestimmte Betriebsarten. Die wichtigsten Betriebsarten sind:
- Install
- Im Installationsmodus werden neue Softwarepakete aus
einer RPM-Datei in das laufende System eingefügt. Der
Installationsmodus wird durch den Optionsschalter -i oder
in der langen Schreibweise -install
eingeleitet. Mit zusätzlichen Optionsschaltern kann die Arbeitsweise
von rpm im Installationsmodus weiter beeinflußt
werden. Als Argument sind die Namen der RPM-Dateien für die zu
installierenden Pakete anzugeben.
- Upgrade
- Im Upgrade-Modus wird ein bereits installiertes
Softwarepaket durch eine neuere Version ersetzt. Um rpm
im Upgrade-Modus zu starten, muß als erste Option -U oder in
langer Schreibweise -upgrade angegeben werden. Die
Arbeitsweise gleicht in vieler Hinsicht der beim Installieren neuer
Pakete. Entsprechend sind auch die möglichen Modifikationsoptionen
und Argumente fast identisch mit denen des Installationsmodus.
- Query
- Der Query-Modus liefert Informationen über die mit
rpm bereits installierten Softwarepakete oder über den
Inhalt einer RPM-Datei. rpm gelangt in den Query-Modus,
wenn als erste Option ein -q oder -query
angegeben wird.
- Erase
- Der Erase-Modus dient zum vollständigen Löschen vorher
installierter RPM-Pakete aus dem System. Der Modus wird durch die
Schalter -e oder -erase
eingeleitet. Konfigurationsdateien werden gesichert, sofern sie
verändert wurden.
- Verify
- Der Verify-Modus dient zum Überprüfen der Integrität
bereits installierter Softwarepakete. Eingeleitet wird dieser Modus
mit -V oder -verify. Verify erkennt
beispielsweise das Fehlen von zu einem Softwarepaket gehörenden
Dateien und die Veränderung von Eigentümer oder Zugriffsrechten.
- Build
- Im Build-Modus werden neue RPM-Pakete erzeugt. Dieser
Modus wird durch die Option -b eingeleitet.
Die Optionen -help -version
-showrc
-rebuilddb -initdb
-recompile
-rebuild -setperm
-setugids und -checksig können unabhängig von
einem der oben beschriebenen Modi verwendet werden.
Um während der Ausführung eines rpm-Kommandos zusätzliche
Information über den Status und eventuell hilfreiche
Debuginformationen zu erhalten, kann in jedem Modus durch die Option
-v oder -v v die Gesprächigkeit des
Programms erhöht werden.
Die Optionen -help und -version führen zur
Ausgabe der entsprechenden Informationen.
Verschiedene Pfadinformationen und bestimmte Defaulteinstellungen kann
rpm aus einer Konfigurationsdatei lesen. Das Programm sucht
nach dieser Datei unter dem Namen rpmrc in den Verzeichnissen
/usr/lib und /etc. Außerdem werden die
Einstellungen aus der Datei .rpmrc im Heimatverzeichnis des
Benutzers gelesen, wenn diese Datei existiert. Schließlich ist es noch
möglich, mit der Option -rcfile eine Initialisierungsdatei
beim Aufruf des Programms auf der Kommandozeile anzugeben. Es werden
alle Dateien in der oben aufgeführten Reihenfolge gelesen und
eventuell bereits belegte Werte durch die später gelesenen
überschrieben.
Der sicher am häufigsten verwendete Modus von rpm ist der
Installationsmodus.
Als Argument erwartet das Programm den oder die Namen der zu
installierenden RPM-Datei(en). Wenn diese Dateien auf CD, in einem
NFS-Verzeichnis oder auf der lokalen Festplatte vorhanden sind, wird
das Paket durch seinen normalen Linux-Dateinamen angegeben.
rpm erlaubt aber auch die direkte Installation von
RPM-Paketen von einem FTP-Server. Dazu muß einfach nur der Paketname
als URL (das ist die in HTML-Dokumenten für das WWW übliche Form)
angegeben werden. Das Beispiel zeigt eine URL für die Datei
bar.rpm im Verzeichnis /pub/foo auf dem
FTP-Server server.domain.de. Wenn ein Username und ein
Paßwort erforderlich sind, können die ebenfalls angegeben werden. Ein
anonymer FTP-Login erfolgt automatisch.
ftp://user:password@server.domain.de/pub/foo/bar.rpm
Zusätzlich zu dem immer erforderlichen Optionsschalter
-i (bzw. der langen Version -install) bietet der
Installationsmodus folgende Optionen:
- -test
- führt alle normalerweise vor der eigentlichen
Installation vorgenommenen Tests durch, die Installation selbst
findet aber nicht statt. Getestet wird, ob alle Pakete, von denen
ein zu installierendes Paket abhängig ist, bereits installiert sind
und ob eine der bei der Installation erzeugten Dateien einen
Namenskonflikt mit einer bereits installierten Datei eines anderen
Pakets auslöst.
Wird bei einem der Tests ein Problem erkannt, erscheint eine
entsprechende Fehlermeldung und das Programm beendet mit dem Status
1. Anderenfalls wird das Programm ohne weitere Ausgabe mit dem
Status 0 beendet.
- -replacepkgs
- erzwingt die Installation eines
bereits installierten Pakets. rpm erkennt durch den
Vergleich mit seiner Datenbank, daß ein Paket bereits installiert ist,
und lehnt die Wiederinstallation normalerweise mit einer
Fehlermeldung ab. Die Durchführung einer solchen Wiederinstallation
kann durch diese Option veranlaßt werden. Die existierenden Dateien
werden überschrieben, Konfigurationsdateien aber vorher gesichert.
Mit dieser Option kann ein teilweise zerstörtes Paket wieder
vervollständigt werden.
- -replacefiles
- veranlaßt das Überschreiben bereits
installierter Dateien anderer Pakete. rpm sichert die
Integrität der bereits installierten Softwarepakete, indem es das
Überschreiben existierender Dateien durch Dateien gleichen Namens,
aber anderen Inhalts aus anderen Paketen verhindert.
Konfigurationsdateien werden vor dem Überschreiben automatisch
gesichert, wenn sie beim Erzeugen der RPM-Datei als solche
gekennzeichnet wurden.
- -nodeps
- unterdrückt die Prüfung auf nicht erfüllte
Abhängigkeitsbedingungen zu anderen Paketen. Abhängigkeiten von
``Services''(beispielsweise eine Shared Library) anderer Pakete sind
in der RPM-Datei verzeichnet. rpm stellt anhand seiner
Datenbank fest, ob eines der bereits installierten Pakete die
Abhängigkeit auflöst. Es lehnt die Installation der neuen Software
ab, wenn nicht alle Abhängigkeiten aufgelöst werden können. Um die
Installation trotzdem durchzuführen, muß diese Option verwendet
werden.
In bestimmten Fällen kann anstelle einer Abhängigkeit zu einem
anderen Paket auch ein ausschließender Konflikt zu einer anderen
Software in einem RPM-Paket verzeichnet sein. Auch in diesem Fall
kann durch diese Option die Installation des neuen Pakets erzwungen
werden.
- -force
- entspricht der Kombination von
-replacepkgs und -replacefiles. Lediglich
die Abhängigkeit von anderen Paketen wird bei -force
weiterhin getestet.
- -excludedocs
- unterdrückt die Installation der zu
einem Softwarepaket gehörenden Dokumentationsdateien.
Um die Installation von Dokumentation auf dem lokalen Rechner
generell zu verhindern, kann in der Datei /etc/rpmrc (oder
einer der anderen oben genannten Initialisierungsdateien) die Zeile
``excludedocs: 1'' eingetragen werden.
- -includedocs
- veranlaßt die Installation von
Dokumentationsdateien, obwohl das in der Initialisierungsdatei durch
``excludedocs: 1'' anders voreingestellt wurde.
- -hash
- führt zur Ausgabe von 50 ``Hashmarks'' (#)
während der Installation der Daten. Durch diese Anzeige wird der
Fortschritt bei der laufenden Installation sichtbar. Durch
Hinzufügen der zusätzlichen Option -v entsteht bei der
Installation mehrer Pakete eine übersichtliche Anzeige.
- -ftpproxy Server
- Wenn der Name des zu
installierenden RPM-Pakets als URL angegeben ist, das Paket also
direkt per FTP installiert werden soll, kann durch diese Option der
eventuell erforderliche Name des FTP-Proxy-Servers angegeben
werden.
- -ftpport Port
- veranlaßt den Aufbau einer
FTP-Verbindung auf dem angegeben port.
- -noscripts
- unterdrückt die Ausführung von Prä- und
Post-Install-Scripts bei der Installation des Pakets. Die
Ausführung dieser Scripts ist in der Regel für die vollständige
Installation und für das einwandfreie Funktionieren eines
Softwarepakets notwendig. Diese Option ist deshalb nur beim Debuggen
eigener RPM-Pakete sinnvoll.
- -prefix Verzeichnis
- veranlaßt die
Installation eines verschiebbaren Pakets in dem angegebenen
Verzeichnis. Mit dem Kommando
rpm -qp --queryformat "%{defaultprefix}\n" *.rpm
kann festgestellt werden, ob ein bestimmtes Paket verschoben werden
kann. Die Ausgabe ``(none)'' zeigt an, daß ein Paket
nicht verschiebbar ist. Anderenfalls wird der Defaultprefix
durch den mit dieser Option angegebenen Wert ersetzt.
- -ignorearch
- erzwingt die Installation eines Pakets
auch dann, wenn es für eine andere Rechnerarchitektur erzeugt wurde.
- -ignoreos
- erzwingt die Installation eines Pakets
auch dann, wenn es für ein anderes Betriebssystem erzeugt wurde.
- -root Verzeichnis
- macht das angegebene
Verzeichnis zum Wurzelverzeichnis der Installation. Durch
diese Option wird das gesamte Installationssystem in das
Verzeichnis verschoben. Normalerweise geschieht das nur
bei der Erstinstallation eines Systems.
- -dbpath Verzeichnis
- veranlaßt die
Benutzung der RPM-Datenbank aus dem angegebenen
Verzeichnis. Normalerweise befindet sich die Datenbank in
/var/lib/rpm.
- -percent
- veranlaßt die Ausgabe einer prozentualen
Fortschrittsanzeige zur Auswertung durch ein anderes Programm
während der laufenden Installation.
Das Upgrade eines bereits installierten Softwarepakets auf eine neuere
Version entspricht einer Kombination aus Installation der neuen und
Löschung der alten Dateien. Die Herausforderung an rpm bei
der Automatisierung dieses Vorgangs besteht in der Bewahrung eventuell
vorhandener Konfigurationsdateien mit systemspezifischen
Einstellungen.
rpm löst das Problem, indem es die existierenden
Konfigurationsdateien sichert, wann immer das nötig ist. Damit das
Programm die Sicherung durchführen kann, müssen zunächst die
Konfigurationsdateien als solche gekennzeichnet sein. Diese
Kennzeichnung ist Bestandteil der RPM-Datei. Es ist also in der
Verantwortung der Distributoren oder der Entwickler, die
Konfigurationsdateien als solche zu markieren.
Beim Upgrade werden existierende Konfigurationsdateien gesichert und
durch die Endung .rpmsave erweitert. Wenn die originale
Konfigurationsdatei der alten Softwareversion mit der zu
installierenden Konfigurationsdatei der neuen Softwareversion
identisch ist, wird die existierende Konfigurationsdatei
übernommen, wenn sie sich von der originalen unterscheidet.
rpm verfügt nicht über die Möglichkeit, inhaltliche
Übereinstimmung festzustellen oder gar Konfigurationsdateien zu
konvertieren. Zur Überprüfung der Identitäten benutzt das Programm
sogenannte MD5 Prüfsummen. Diese Prüfsummen werden über die
vollständigen Dateien erzeugt und von rpm bei der
Installation eines Pakets in seiner Datenbank gespeichert. Das
Prüfsummenverfahren ist ein sehr zuverlässiger Weg zur Unterscheidung
unterschiedlicher Versionen einer Datei. Durch die in der Datenbank
gespeicherte Prüfsumme der originalen Datei kann rpm
jederzeit Veränderungen an den installierten Daten feststellen.
Der Upgrade-Modus muß durch die Option -U (bzw. das
äquivalente -upgrade) eingeleitet werden. Alle für den
Installationsmodus beschriebenen Optionen können auch für den
Upgrade-Modus verwendet werden.
Zusätzlich versteht rpm im Upgrade-Modus eine weitere Option:
- -oldpackage
- erlaubt das ``Downgrade'' zu einer
älteren Version eines installierten Softwarepakets. Normalerweise
erkennt das Programm den Versuch eines solchen ``Rückschritts'' als
Fehler. Diese Option ermöglicht es, nach dem Test der leider
fehlerhaften aktuellsten Version einer Software wieder zum
funktionierenden Ausgangszustand zurückzukehren.
Beim Softwaremanagement geht es nicht nur darum, neue Programme zu
installieren und zu aktualisieren. Viele Programme müssen konfiguriert
werden, in jedem Fall muß die Dokumentation gelesen werden, eventuell
müssen Fehler und Integrationsprobleme gelöst werden. rpm
unterstützt Systemverwalterin und Benutzer, indem es einen einfachen
Zugang zu den in seiner Datenbank gespeicherten Informationen
anbietet.
Im Query-Modus kann rpm beispielsweise herausfinden, zu
welchem Paket eine bestimmte Datei gehört, wo und unter welchem Namen
die Konfigurationsdateien oder die Dokumentation installiert wurden
und welche ``Services'' von einem Paket benutzt oder bereitgestellt
werden.
Damit rpm im Query-Modus arbeitet, muß als erste Option
-q (oder als Alternative -query) angegeben
werden. Welche Information aus welchen Paketen gesucht wird, kann
durch weitere Optionen festgelegt werden.
In der Regel werden die im Query-Modus ermittelten Informationen
nicht über alle installierten Pakete gleichzeitig
benögigt. rpm ermöglicht deshalb die Auswahl der zu
untersuchenden Pakete nach verschiedenen Kriterien.
Die einfachste Methode zur Spezifikation eines zu untersuchenden
Pakets ist natürlich die Übergabe des Paketnamens als Argument auf der
Kommandozeile. Hierbei ist allerdings darauf zu achten, daß die
Paketnamen exakt und vollständig angegeben werden müssen. Wildcards
sind ebensowenig erlaubt wie die Ignorierung von Groß- und
Kleinschreibung. Zusätzlich zu dem eigentlichen Paketnamen kann noch
die Versionsnummer und die Releasenummer des Pakets in der exakten
Form mitgegeben werden.
Der exakte Paketname, von dem nur ein ungenauer Teil bekannt ist, kann
mit Hilfe von grep aus der Liste aller installierten Pakete
herausgefiltert werden:
$ rpm -q -a | grep file
fileutils-3.12-3
file-3.19-2
$ _
Weitere Möglichkeiten zur Auswahl bestimmter Pakete werden durch
folgende Optionen gegeben:
- -a
- führt das Query-Kommando für alle in der Datenbank
eingetragenen Softwarepakete durch.
- -p RPM-Datei
- untersucht die angegebene
RPM-Datei, nicht die Datenbank des bereits installierten
Systems. Mit dieser Option kann der Inhalt eines unbekannten
RPM-Pakets untersucht werden, bevor die darin enthaltene Software
installiert wird.
- -f Datei
- ermittelt anhand der Datenbank, zu
welchem Paket die angegebene Datei gehört und gibt die Information
zu diesem Paket aus.
- -whatprovides Service
- ermittelt anhand
der Datenbank, welches Softwarepaket den angegebenen Service
(beispielsweise eine Shared Library) anbietet und gibt die
Information zu diesem Paket aus.
- -whatrequires Service
- ermittelt anhand
der Datebank, welche Softwarepakete den angegebenen Service
verwenden und gibt Informationen zu diesen Paketen aus.
- -g Gruppe
- ermittelt anhand der Datenbank
alle zur angegebenen Gruppe gehörenden Softwarepakete und führt das
Query-Kommando mit diesen Paketen aus. Die Gruppierung der
einzelnen Pakete liegt ebenso wie die Bezeichnung der Gruppen im
Ermessen des Distributors. Eine Liste mit allen verwendeten
Programmgruppen wird durch das folgende Kommando ausgegeben:
rpm -q --qf '%{group}\n' -a | sort | uniq
Ohne spezielle Auswahl zeigt rpm nur den Paketnamen (das
``Label'') an. Optional können folgende Informationen über die von
rpm verwalteten Softwarepakete gewonnen werden:
- -i
- gibt die ``Karteikarte'' zu einem
Paket aus. Unter anderem sind darauf die Herkunft (Distribution), die
Versionsnummer, das Installationsdatum und eine verbale Beschreibung
des Inhalts verzeichnet.
Das Ausgabeformat und der Inhalt der Anzeige kann mit der Option
-queryformat im Detail eingestellt werden.
- -l
- zeigt ein Listing aller zu einem Paket gehörenden
Dateien. Durch Zusatz der Option -v entsteht ein
ausführliches Listing im Format von 'ls -l'.
- -c
- gibt eine Liste aller zu dem Paket gehörenden
Konfigurationsdateien aus. Wenn die Software keine
Konfigurationsdatei benutzt, wird kein Dateiname ausgegeben.
- -d
- zeigt eine Liste aller zu einem Paket gehörenden
Dokumentationsdateien an.
- -s
- zeigt die in der Datenbank gespeicherten
Statusinformationen der zu einem Paket gehörenden Dateien an. Es
findet keine Überprüfung im Dateisystem statt, die angezeigten Werte
stammen allein aus den Datenbankeinträgen, die bei der Installation
des Softwarepakets angelegt worden sind. Der Status kann folgende
Werte annehmen:
- normal
- Die Datei wurde nicht durch die Installation eines
anderen Pakets verändert.
- replaced
- Die Datei wurde bei der Installation eines anderen
Pakets ersetzt.
- not installed
- Die Datei wurde nicht installiert. Dieser Fall
tritt beispielsweise auf, wenn durch die Option
-excludedocs ein Teil der zu einem Paket gehörenden
Dateien ausgeschlossen wurde.
- net shared
- Die Datei befindet sich in einem verteilt
genutzten Netzwerkverzeichnis. Die Pfade solcher per NFS
gemounteten oder exportierten Verzeichnisse müssen vor der
Installation in der Initialisierungsdatei /etc/rpmrc in
dem Eintrag netsharedpath angegeben sein, damit der
Status entsprechend in der Datenbank festgehalten wird.
- -queryformat FormatString
- gibt eine
``Karteikarte'' für jedes untersuchte Paket in dem durch den
FormatString festgelegten, benutzerspezifischen Format
aus. Diese Option kann auch durch -qf abgekürzt werden.
Der Formatstring wird ähnlich aufgebaut wie der bei der C-Funktion
printf typischerweise verwendete. In einen Text können
Tags eingebettet werden, die bei der Anzeige durch
entspechend formatierte Paketinformationen ersetzt werden. Ein Tag
hat die Form %{TAGNAME}. Eine Liste aller möglichen
Tagnamen wird durch die Option -querytags ausgegeben.
Zwischen dem Prozentzeichen und dem Tagnamen kann zur Ausrichtung
einer Tabelle noch die Feldlänge angegeben werden. Soll eine Liste
gleichartiger Einträge ausgegeben werden (beispielsweise eine
Dateiliste), so muß der zu wiederholende Teil des FormatStrings in
eckige Klammern eingeschlossen werden. Soll ein gleichbleibender Tag
in mehreren Ausgabezeilen erscheinen, muß der Tagname durch ein
Gleichheitszeichen gekennzeichnet werden. Das folgende Beispiel
zeigt einen Formatstring zur Ausgabe des Paketnamens vor jeder Datei
einer Liste:
$ rpm -q --qf '[%{=name}: %-40{filenames} (%{filesizes} bytes)\n]' ical
ical: /usr/bin/ical (10 bytes)
ical: /usr/bin/ical-2.0p2 (778268 bytes)
ical: /usr/doc/ical-2.0p2-5 (1024 bytes)
ical: /usr/doc/ical-2.0p2-5/ical.doc (54451 bytes)
....
$ _
Die Option -queryformat gibt eine vollständige Dateiliste
aus, wie -l. Die Einschränkung der Liste, beispielsweise auf
die Konfigurationsdateien, ist nicht möglich.
- -querytags
- gibt eine Liste mit allen vom
rpm Queryformat unterstützten Tags aus.
- -provides
- veranlaßt die Anzeige aller von einem
Paket bereitgestellten Services. Diese Services können von anderen
Paketen genutzt werden.
- -requires
- veranlaßt die Anzeige aller von einem
Paket genutzten Services. Alle angeforderten Services müssen von
bereits installierten Paketen angeboten werden, damit das
Softwarepaket voll funktionsfähig ist.
- -scripts
- gibt alle zu einem Paket gehörenden
Scriptdaten aus. Das RPM-System benutzt an fünf verschiedenen
Stellen paketspezifische Shellscripts:
- preinstall
- wird vor der Installation des Pakets ausgeführt
- postinstall
- wird im Anschluß an die erfolgreiche Installation
der Software ausgeführt
- preuninstall
- wird vor dem Entfernen eines Softwarepakets
ausgeführt
- postuninstall
- wird nach der Löschung eines Softwarepakets
ausgeführt
- verify
- wird zur Überprüfung einer fehlerfreien Installation
im Verify-Modus ausgeführt.
- -dump
- gibt in Verbindung mit -l, -d
oder -c alle zu einer Datei in der Datenbank enthaltenen
Informationen aus. Das Format ist eher für die Interpretation durch
andere Programme als für den menschlichen Leser gedacht. Über die
bei einem ausführlichen Listing gelieferten Daten hinaus wird bei
-dump auch die MD5 Prüfsumme der Datei angezeigt.
Beim Löschen eines installiertes Softwarepakets ``von Hand'' können
zwei Probleme auftreten:
- 1.
- Es ist nicht ohne weiteres feststellbar, welche Dateien zu dem
zu löschenden Paket gehören und welche mit anderen Paketen
installiert oder gar während des Betriebs erzeugt wurden. Deshalb
bleiben entweder zum Paket gehörende Dateien ohne weitere Funktion
zurück oder es werden versehentlich Dateien anderer Softwarepakete
gelöscht.
- 2.
- Eventuell werden bestimmte Teile des zu löschenden Pakets von
anderen Softwarepaketen verwendet, die nach dem Löschen dann nicht
mehr funktionieren. Diese Abhängigkeiten sind ebenfalls nicht ohne
weiteres feststellbar.
Beide Probleme lassen sich zuverlässig lösen, indem ganze
Softwarepakete mit rpm gelöscht werden. rpm
behält alle Informationen über ein mit dem Programm installiertes
Softwarepaket in seiner Datenbank und kann so leicht alle zu dem Paket
gehörenden Dateien identifizieren. Zusätzlich sind in der Datenbank
die Abhängigkeiten der Pakete untereinander verzeichnet. Mit diesen
Informationen verhindert rpm automatisch, daß Pakete
gelöscht werden, die noch von anderen Paketen gebraucht werden.
rpm sichert zusätzlich die Konfigurationsdateien, sofern
diese nicht mit den ursprünglich installierten Defaultdateien
übereinstimmen.
Durch spezielle Shellscripts, die von den Herstellern in ein
RPM-Paket eingebaut werden können, lassen sich zusätzliche
Kommandofolgen zur Vorbereitung und zum Abschluß einer Löschung
automatisch ausführen.
Der Erase-Modus muß durch die Option -e oder in
ausgeschriebener Form -erase eingeleitet werden. Durch
Angabe der zusätzlichen Option -v v wird ein ausführliches
Protokoll des Löschvorgangs ausgegeben. Außerdem stehen folgende
Optionen im Erase-Modus zur Verfügung:
- -test
- führt lediglich den Abhängigkeitstest durch,
ohne das Paket tatsächlich zu löschen. Eine detaillierte
Protokollierung aller für die Löschung vorgesehenen Schritte
wird durch die zusätzliche Angabe der Doppeloption
-v v ausgegeben.
Bei einem Testlauf werden auch die an der Löschung beteiligten
Scriptdateien getestet, das bedeutet, sie werden ausgeführt! Die
Ausführung kann verhindert werden, indem -test zusammen
mit -noscripts aufgerufen wird. Der Inhalt der
uninstall-Scripts kann im Query-Modus durch die Option
-scripts angezeigt werden.
- -noscripts
- unterdrückt die Ausführung der
uninstall-Scripts.
- -nodeps
- erzwingt das Löschen eines Softwarepakets
auch dann, wenn die von dem Paket bereitgestellten Services von
anderen Programmen verwendet werden. Nach einer solchen erzwungenen
Löschung muß damit gerechnet werden, daß die davon abhängigen
Softwarepakete nicht mehr einwandfrei funktionieren.
Gelegentlich taucht die Frage nach der Integrität eines Softwarepakets
auf. Das kann bei der Suche nach der Ursache für einen plötzlich
auftretenden Fehler sein, oder es geschieht, nachdem eine Person
unberechtigten Zugang zum Rechner hatte.
rpm kann mit Hilfe seiner Datenbank auch hier sehr gute Dienste
leisten. Im Verify-Modus prüft rpm alle zu einem Paket
gehörenden Dateien im Dateisystem und vergleicht die Daten mit den in
der Datenbank gespeicherten. Alle Abweichungen werden als
Fehlermeldungen angezeigt. Außerdem wird geprüft, ob alle Services,
von denen das Paket abhängig ist, durch andere Pakete bereitgestellt
werden.
Wenn rpm im Verify-Modus einen Fehler erkennt, gibt es den
Namen der veränderten Datei zusammen mit einer Reihe von 8 oder 9 Zeichen
aus. Die 8 Zeichen repräsentieren die 8 Tests, die im Verify-Modus
durchgeführt werden. Das neunte Zeichen kennzeichnet
Konfigurationsdateien.
Die einzelnen Zeichen und die damit verbundenen Tests sind folgende:
- S
- (Size) erscheint, wenn die Größe der Datei im Dateisystem von
dem in der Datenbank gespeicherten Wert abweicht.
- M
- (Mode) erscheint, wenn die Zugriffsrechte der Datei im
Dateisystem anders gesetzt sind, als das in der Datenbank
verzeichnet ist.
- 5
- (md5) erscheint, wenn die MD5-Prüfsumme für die Datei im
Dateisystem nicht mit der in der Datenbank gespeicherten
übereinstimmt.
- D
- (Device) erscheint bei Gerätedateien, wenn die Gerätenummern
der Datei im Dateisystem nicht mit den in der Datenbank
gespeicherten Werten übereinstimmt.
- L
- (Link) erscheint bei einem symbolischen Link, wenn der darin
verzeichnete Dateiname nicht mit dem in der Datenbank gespeicherten
übereinstimmt.
- U
- (User) erscheint, wenn der Eigentümer einer Datei im
Dateisystem nicht mit dem in der Datenbank verzeichneten Eigentümer
übereinstimmt.
- G
- (Group) erscheint, wenn die Gruppenzugehörigkeit einer Datei
nicht mit der in der Datenbank verzeichneten Gruppe übereinstimmt.
- T
- (Time) erscheint, wenn die Zeit der letzten Änderung einer
Datei im Dateisystem nicht mit der in der Datenbank verzeichneten
Zeit übereinstimmt.
Die Zeichen erscheinen, wenn der entsprechende Test nicht
bestanden wurde. Für jeden bestandenen Test erscheint ein einzelner
Punkt.
Durch den zusätzlichen Buchstaben c werden
Konfigurationsdateien gekennzeichnet.
Der Verify-Modus von rpm muß durch die Option -V
oder durch die gleichwertigen Optionen -y oder
-verify eingeleitet werden. Als Argument kann der
Paketname auf der Kommandozeile übergeben werden. Wie beim
Query-Modus beschrieben, muß dieser Name vollständig und exakt
angegeben werden.
Durch die Angabe der Doppeloption -v v auf der
Kommandozeile erscheinen während der Ausführung zusätzliche
Informationen über den Programmablauf. Außerdem stehen folgende
Kommandozeilenoptionen zur Verfügung:
- -p RPM-Datei
- führt die Prüfung der Dateien
im Dateisystem nicht gegen die in der Datenbank gespeicherten
Informationen durch, sondern gegen die in der angegebenen
RPM-Datei enthaltenen.
- -f Datei
- veranlaßt die Prüfung des gesamten
Pakets, zu dem die angegebene Datei gehört.
- -a
- veranlaßt die Prüfung sämtlicher in der Datenbank
verzeichneten Softwarepakete.
- -g Programmgruppe
- veranlaßt die Prüfung aller Pakete
aus der angegebenen Programmgruppe.
- -noscripts
- unterdrückt die Ausführung des mit dem
RPM-Paket ausgelieferten Verifikations-Scripts.
- -nodeps
- unterdrückt die Prüfung auf nicht
aufgelöste Abhängigkeiten zu anderen Paketen.
- -nomd5
- unterdrückt den Test auf unterschiedliche
MD5-Prüfsummen.
- -nofiles
- unterdrückt die Durchführung aller
dateispezifischen Tests. Lediglich das Verify-Script und der
Abhängigkeitstest werden ausgeführt.
Weil sehr viel Linux-Software über das Internet verteilt wird,
besteht Bedarf an einer weiteren Art der Software-Überprüfung,
nämlich der Verifizierung des RPM-Pakets selbst. Es gibt zwar
praktisch keine Viren unter Linux; Trojanische Pferde oder einfache
``Paketbomben'' können aber leicht in RPM-Dateien versteckt und über
das Internet verbreitet werden. Um solchen Mißbrauch zuverlässig zu
verhindern, kann die Integrität der RPM-Datei mit Hilfe einer
PGP-Signatur zweifelsfrei festgestellt werden.
PGP (Pretty Good Privacy) ist ein sehr leistungsfähiges
Programm zum Verschlüsseln von Daten und zum Signieren von Dateien. Es
arbeitet mit einem kryptografisch starken Public Key Verfahren.
Einige Hersteller von Linux-Distributionen und viele
Entwickler signieren ihre Produkte mit einem nur ihnen bekannten
geheimen Schlüssel. Der dazu passende öffentliche Schlüssel wird auf
verschiedenen Wegen verbreitet, beispielsweise auf den WEB-Servern
der Anbieter oder über öffentliche Key-Server.
Um die PGP-Signatur eines Pakets prüfen zu können, muß
die PGP-Software installiert sein und der Public Key des
Paketherstellers am PGP-Schlüsselring hängen.
- -checksig RPM-Datei
- führt die
Signaturprüfung für die angegebene RPM-Datei durch.
Nach der erfolgreichen Durchführung der Prüfung wird eine Zeile mit
dem Paktenamen und den Wörtern ``size pgp md5 OK''
ausgegeben. Wenn das Paket keine PGP-Signatur hat, erscheint nur
``size md5 OK''. Ein defektes oder manipuliertes Paket wird
durch die Ausgabe ``size PGP MD5 NOT OK'' gekennzeichnet.
Die Feststellung eines Fehlers duch rpm im Verify-Modus
ist nur der erste Schritt zur Lösung des Problems. Wenn das Fehlen von
Dateien oder eine nicht beabsichtigte Veränderung von Daten oder
Programmen festgestellt wurde, bleibt eigentlich nur das Überschreiben
der betroffenen Softwarepakete. rpm ermöglicht das mit der
Option -replacepkgs im Installationsmodus.
Manchmal ist es jedoch gar nicht nötig, die Daten zu überschreiben.
Viele Probleme mit einer Software rühren von falschen Eigentums- und
Zugriffsrechten her. Die korrekten Voreinstellungen für diese
Dateiattribute sind in der Datenbank von rpm verzeichnet
und können deshalb jederzeit in ihren ursprünglichen Zustand
zurückgesetzt werden:
- -setperms
- setzt die Zugriffsrechte für alle Dateien
des spezifizierten Pakets auf die in der Datenbank gespeicherten Werte.
- -setugids
- setzt Eigentümer und Gruppe aller
spezifizierten Pakete auf die in der Datenbank gespeicherten Werte.
Für beide Optionen können die zu bearbeitenden Softwarepakete auf die
beim Query-Modus beschriebene Weise angegeben werden.
Sollte es aus irgend einem Grund zu einem Fehler in der Datenbank von
rpm selbst kommen, ist die korrekte Verwaltung der
Softwarepakete im System nicht mehr möglich. Bevor diese Software
selbst neu installiert wird und damit die Datenbank mit allen
Informationen über das bestehende System verloren geht, kann mit der
Option -rebuilddb eine Rekonstruktion der Datenbank aus
eventuell noch vorhandenen Resten versucht werden.
Eine vollständig zerstörte Datenbank kann aus dem laufenden System
nicht mehr zurückgewonnen werden. Mit der Option -initdb
kann eine neue, leere Datenbank erzeugt werden, nachdem die eventuell
noch vorhandenen Reste einer nicht mehr brauchbaren Datenbank gelöscht
wurden.
Die Funktionalität von rpm wird abgerundet durch den
Build-Modus, in dem neue RPM-Pakete erzeugt werden. Die Herstellung
von RPM-Paketen ist nur auf den ersten Blick allein Aufgabe der
Linux-Distributoren. Wegen der vielen Vorteile, die das
Softwaremanagement mit rpm bietet, ist es durchaus auch für
eine Systemverwalterin interessant, lokal aus Sourcecode erzeugte
Software mit rpm zu installieren.
rpm erledigt wesentliche Teile der Herstellungsarbeit
automatisch, so daß der Aufwand für die Umwandlung eines TAR-Pakets in
eine RPM-Datei überschaubar bleibt. In der Hauptsache besteht die
manuelle Arbeit darin, das sogenannte Spec-File zu erzeugen. Ähnlich
dem Makefile steuert diese Datei die Aktionen von rpm.
Die Herstellung eines RPM-Pakets geschieht in mehreren Phasen:
- prep
- Die Vorbereitung kann beispielsweise im Auspacken der
Sourcen, dem Anwenden eines Patches auf diese Sourcen und dem
Ausführen von configure bestehen.
- build
- Der Aufbau besteht in vielen Fällen einfach aus der
Ausführung von make im Source-Verzeichnis.
- install
- Die Erstinstallation wird ebenfalls meistens von
make erledigt
- binary
- Die neu installierten Dateien werden der Packliste
entsprechend in einer RPM-Datei zusammengefaßt.
- archive
- Schließlich werden die Sourcen zusammen mit dem
Spec-File, den Patches und allen eventuell sonst noch für die
Herstellung nötigen Dateien in ein Source-RPM gepackt.
Zur Unterstützung bei der Erstellung der Packliste kann rpm
im Build-Modus prüfen, ob alle Dateien der Liste vorhanden sind und
zusätzlich bestimmte Services und Abhängigkeiten feststellen.
Der Build-Modus muß durch die Option -b eingeleitet
werden. Direkt an diesen Optionsschalter angehängt wird ein zweiter
Buchstabe, mit dem festgelegt wird, welche Herstellungsphasen
durchlaufen werden sollen:
- p
- nur die Vorbereitungsphase
- c
- die Vorbereitung und der Aufbau
- i
- Vorbereitung, Aufbau und Erstinstallation
- b
- wie i, nach der Erstinstallation wird das binäre
RPM-Paket gepackt
- a
- wie b, zusätzlich wird noch das Source-RPM erzeugt
- l
- Überprüfung der Packliste
Zusätzlich stehen im Build-Modus folgende Optionen zur Verfügung:
- -short-circuit
- veranlaßt bei den Modi -bc
und -bi nur die Ausführung der jeweils letzten Phase. Auf
diese Weise kann ein wegen eines Fehlers unterbrochener
Herstellungsvorgang wieder aufgenommen werden.
- -test
- sichert die von rpm erzeugten
Shellscripts in /var/tmp. Diese Dateien enthalten alle
während des Herstellungsvorgangs ausgeführten Kommandos.
- -clean
- veranlaßt das Löschen des für die
Herstellung angelegten Verzeichnisbaums nach Abschluß des
Build-Prozesses.
- -sign
- fügt eine PGP-Signatur zum RPM-Paket hinzu.
- -buildroot Verzeichnis
- veranlaßt die
Erstinstallation der aufgebauten Software in dem angegebenen
Verzeichnis. Die Build-Scripts müssen speziell für diese Option
vorbereitet sein, damit der Herstellungsprozeß korrekt ablaufen kann.
- -timecheck Sekunden
- verhindert das
Einpacken von älteren Dateien in das binäre RPM-Paket. Durch diese
Option kann sichergestellt werden, daß nur die im Herstellungsprozeß
neu erzeugten Dateien in das Binärpaket aufgenommen werden.
glint(8), rpm2cpio,
dpkg(8) und dselect(8)
Next: shutdown
Up: Die Kommandos für root
Previous: rmmod
Das Linux Anwenderhandbuch
(C) 1997
LunetIX