Beschreibung: Prüfungskandidaten sollten in der Lage sein, Paketmanagement auf Linuxdistributionen, die RPM-Pakete für die Paketverwaltung verwenden, durchzuführen. Dieses Lernziel beinhaltet die (Neu-)Installation, das Update und das Entfernen von Paketen sowie das Abfragen von Status- und Versionsinformationen. Ebenfalls enthalten ist das Abfragen von Paketinformationen wie Abhängigkeiten, Integrität und Signaturen. Kandidaten sollten auch in der Lage sein, zu bestimmen, welche Dateien von einem Paket zur Verfügung gestellt werden, und das Paket zu finden, dem eine bestimmte Datei entstammt.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Die meisten heutigen Linux-Distributionen haben das Paketformat von RedHat übernommen, weil es eine sehr weitreichende Verwaltung der installierten Software ermöglicht. Dazu zählen unter anderem die korrekte Installation und Deinstallation, die Informationen über installierte Programme und die Verifikation, daß bestimmte Pakete tatsächlich das enthalten, was sie vorgeben. Die gesamte Verwaltung der Red-Hat Pakete wird durch ein Programm realisiert, das den Namen rpm trägt. Auch Nicht-RedHat Distributionen unterstützen dieses Programm.
Jedes RPM-Paket enthält neben den zu installierenden Dateien wie Debian-Pakete vier Scripts, die jeweils vor und nach der Installation und Deinstallation ausgeführt werden. Zusätzlich existieren Informationen über das Paket und die Abhängigkeiten, die die darin enthaltenen Programme besitzen.
Im Verzeichnis /usr/lib/rpm liegen die verschiedenen Hilfsmittel, die das rpm-Programm benötigt und unter /var/lib/rpm finden sich die verschiedenen Datenbanken über die installierten Pakete. Im Gegensatz zu Debian werden diese Datenbanken in einem proprietären Format abgespeichert, das nur mit dem rpm-Programm zugänglich ist.
rpm -i | --install [Optionen] Paketdateidas -i | --install bedeutet, daß entweder ein -i oder ein --install angegeben wird. Mögliche Optionen sind:
Vorsicht ist geboten, wenn die Überprüfung der Abhängigkeiten abgeschalten wird, oder das zwingende Installieren von Paketen aktiviert wird. Das kann zu Inkonsistenzen des Systems führen und sollte nur verwendet werden, wenn man genau weiß, was man tut.
rpm -e | --uninstall [Optionen] PaketnameAuch für die Deinstallation gibt es einige Wichtige Optionen:
rpm -U|--upgrade [Optionen] PaketdateiAls Optionen kommen exakt die selben Optionen wie beim Installieren zum Einsatz. Der Befehl entspricht im Übrigen genau dem, der zum Installieren benutzt wird, nur daß eventuell vorher existierende Versionen des Paketes vor der Installation entfernt werden.
rpm -F|--freshen [Optionen] PaketdateiDieser Befehl, der auch wieder die selben Optionen wie beim Installieren kennt, installiert die angegebene Paketdatei nur, wenn eine ältere Version des selben Programms vorher schon installiert war. Dann verhält er sich wie der vorige (-U)
Wenn ein normaler Querry-Befehl angegeben wird, so bezieht er sich auf schon installierte Pakete. rpm durchsucht also nicht eine bestimmte Paketdatei, sondern die Datenbanken, in denen die Informationen über installierte Pakete liegen. Soll aber Information über eine Paketdatei erfragt werden, die noch nicht installiert ist, so muß die Option -p angegeben werden. Statt der Angabe eines Paketnamens ist dann die Angabe einer Paketdatei notwendig.
rpm -qi Paketname rpm --query --info PaketnameSoll stattdessen die Versionsinformation eines nicht installierten RPM-Paketes erfragt werden (was eigentlich unnötig ist, da diese Information im Dateinamen schon vorliegt) kommt einer der folgenden Befehle zum Einsatz
rpm -qi -p Paketdatei rpm --query --info --package PaketdateiNatürlich können die langen und kurzen Optionen auch durcheinander benutzt werden wie --query -i oder -q --info.
Neben der reinen Versionsinformation werden auch noch andere Paketinformationen ausgegeben. Wenn tatsächlich nur die Information über die Version abgefragt werden soll, kann auch der eingebaute Variablensubstitutionsmechanismus benutzt werden:
rpm -q Paketname --queryformat "%{VERSION}\n"Auf diese Art und Weise können beliebige Informationen in einem beliebigen Format ausgegeben werden. Eine komplette Liste aller so benutzbaren Variablensubstitutionen ist mit dem Befehl
rpm --querytagseinsehbar. In der gegenwärtigen Version sind es 98 verschiedene Typen wie etwa NAME, VERSION, RELEASE, DESCRIPTION, SIZE, VENDOR, FILENAMES, ...
rpm -ql Paketnamewird eine Liste aller Dateien des angegebenen Paketes ausgegeben. Statt -l kann auch --list verwendet werden. Soll stattdessen wieder eine noch nicht installierte Paketdatei untersucht werden, so gilt wieder der Parameter -p
rpm -ql -p PaketdateiDie Ausgabe erfolgt auf die Standard-Ausgabe, kann also problemlos mit Tools wie grep weiterverarbeitet werden.
rpm -qd Paketnameoder wieder mit langen Optionen --docfiles statt dem d. Auch dieser Befehl ist mit -p auf eine Paketdatei anwendbar.
rpm -qc Paketnameoder wieder mit langen Optionen --configfiles statt dem c. Auch dieser Befehl ist mit -p auf eine Paketdatei anwendbar.
rpm -q --scripts PaketnameEr listet hintereinander alle vier Scripts auf die Standard-Ausgabe, sollte also entweder in eine Datei umgeleitet oder an less weitergepiped werden.
Gerade dieser Befehl ist natürlich wichtig für noch nicht installierte Paketdateien, um vorher sicherzustellen, daß das Script nichts unerwünschtes macht. Also steht uns auch hier wieder die Option -p zur Verfügung.
rpm -qaoder
rpm -q --allrpm verwaltet auch bestimmte Gruppen, so daß auch Abfragen möglich sind, die alle installierten Pakete einer Gruppe ausgeben:
rpm -qg Gruppeoder
rpm -q --group GruppeDiese Ausgaben können natürlich sehr umfangreich sein, können aber wiederum z.B. mit grep durchsucht werden. Wenn z.B. erforscht werden soll, welche Pakete installiert sind, die etwas mit dem Editor joe zu tun haben, können wir einfach schreiben
rpm -qa | grep joeDie Ausgabe wäre dann z.B.:
joe-2.8-154Daraus können wir jetzt weitere Informationen gewinnen, mit einem der oben genannten Abfragemöglichkeiten.
rpm -qf Dateinameoder
rpm -q --file Dateinamerpm durchsucht jetzt seine Datenbanken nach diesem Dateinamen und gibt uns das Paket zurück, aus dem diese Datei stammt.
rpm -q --whatrequires Funktionoder
rpm -q --whatrequires Dateikann herausgefunden werden, welches installierte Paket das angegebene Paket oder die angegebene Datei benötigt.
rpm -qR Paketnameoder
rpm -q --requires Paketnamewird eine Liste aller Libraries und Pakete ausgegeben, die von dem angegebenen Paket benötigt werden.
rpm -V |--verify PaketnameDas Format der Ausgabe ist eine acht Zeichen lange Zeichenkette, ein mögliches "c" (für Konfigurationsdatei) und der Dateiname. Jedes der acht Zeichen bezeichnet das Ergebnis eines Vergleichs zwischen den Attributen einer Datei und denen, die in der Paketdatenbank gespeichert sind. Ein einfacher Punkt (.) bedeutet, daß der Test durchgelaufen ist, während ein Fragezeichen (?) anzeigt, daß der Test nicht durchgeführt werden konnte (z.B. weil Zugriffsrechte zum Lesen gefehlt hatten). In jedem anderen Fall repräsentieren die Buchstaben Fehler des jeweiligen Verifizierungstests:
rpm --checksig PaketdateiDamit diese Überprüfung funktioniert muß eine korrekte Installation von PGP oder GPG vorliegen und die Konfiguration von rpm muß dies berücksichtigen. Die Darstellung dieser Technik würde den Rahmen dieser Dokumentation sprengen.