RPM Kommandos

Linux RPM RedHat Packet Manager Kommandos

RPM heißt RedHat Packet Manager und ist, wie der Name schon sagt ein Programm zur Paketverwaltung, welches zum Beispiel auch von anderen Programmen benutzt wird. Eines davon ist Kpackage. Es gibt aber auch noch eine ganze Menge anderer Programme, um Paketmanager wie den RPM zu steuern. Man sollte jedoch hier nicht die Macht der Kommandozeile unterschätzen. Der RPM bietet hier eine Vielzahl von Funktionen, die oft von solchen Programmen gar nicht richtig genutzt werden. Zumindest habe ich noch nicht die ultimative Umsetzung gesehen. Deshalb finde ich es nicht verkehrt, auch einmal ein paar Befehle zu kennen, die man im Alltag gebrauchen kann. wer einfach nur eine Suchmaschine für RPM-Pakete sucht, der wird [LINK:START:279]hier[LINK:END] fündig. Vorweg sei gesagt, dass man wie immer Hilfe durch Eingabe von

man rpm

bekommt, was zum Anzeigen der rpm-Manuals führt.

Beispiel eins: Man möchte wissen, welche Pakete man denn nun so installiert hat, weil man dem Installationsprogramm nicht richtig traut oder sicher sein will, dass ein bestimmtes Paket dabei ist. Bei Eingabe von

rpm -qai > Mandrake7.0.txt

werden die Paketinformationen sämtlicher installierter Pakete in die Datei Mandrake7.0.txt geschrieben. Möchte man nun zum Beispiel wissen, ob das Paket Kpackage installiert ist, kann man dies zum Beispiel mit

cat Mandrake7.0.txt | grep kpackage

tun. Falls Kpackage installiert ist, wird jetzt die passende Paketbeschreibung ausgegeben. Sollte dies nicht zum Ziel führen, kann man auch nach der Datei kpackage suchen. Dazu nutzt man anstatt der Optionen "-qai" die Optionen "-qal" des rpm. Dadurch werden alle Dateinamen mit komplettem Pfad, der auf dem Rechner mit Hilfe von RPMs installierten Dateien in diese Datei geschrieben. Gibt man dann "cat Mandrake7.0.txt | grep kpackage" ein, führt das zur Ausgabe aller Verzeichnisse, in denen das Wort kpackage vorkommt. Dazu gehören natürlich auch Dokumentation etc... aber trotzdem kann man so feststellen, ob das Gesuchte vorhanden ist oder nicht. Es ist nun nicht schwer, sich zu überlegen, dass man als Option "-qail" benutzen kann, wenn man sowohl die Paketinfos, als auch alle Dateinamen haben will.

Beispiel zwei: "libtralala nicht gefunden" oder so ist eine bekannte Fehlermeldung, wenn man versucht, ein aus dem Netz gesogenens Programm zu installieren. Der Paketmanager teilt hier mit, dass das Programm leider die Funktionen, die in der sagenumwobenen "libtralala" enthalten sind, benötigt, um zu funktionieren. Also macht man sich auf die Suche nach dieser Bibliothek. Führt man die in Beispiel eins dargestellten Schritte aus, kann man sich auch selbst davon überzeugen, dass die "libtralala" nicht vorhanden ist. Man legt also die RPM-CD seiner Distribution ein und mounted sie mit "mount /dev/ usw...". So weit, so gut. Im Folgenden gehe ich davon aus, dass man sich im "/"-Verzeichnis befindet! Doch wie bekommt man nun die Information, ob sich meine "libtralala" auf dieser CD befindet? Auch dafür gibt es ein paar lustige Befehle( Vielen Dank an Martin Rasp für diesen Tip mit den Unterverzeichnissen! ).

Wenn man weiß, wo die RPMs sind, gibt man zum Beispiel

rpm -qpil /mnt/cdrom/Mandrake/RPMS/*.rpm > /home/jens/Mandrake7.0.txt

ein, was die RPM-Beschreibungen und sämtliche Dateien inklusive Pfad in die Datei Mandrake7.0.txt schreibt, welche hier im Verzeichnis /home/jens/ liegt. /mnt/cdrom/ ist hier der mountpoint des CD-Rom Laufwerkes und /Mandrake/RPMS/ das Verzeichnis, wo die *.rpm Dateien liegen. Nun kann es ja sein, dass man eine CD hat, von der man nicht weiß, in welchen Verzeichnis die Pakete liegen und man hat weder Lust noch Zeit, durch die gesamte Verzeichnisstruktur zu surfen. Dann benutzt man stattdessen den Befehl

rpm -qpil `find /mnt/cdrom/ | grep ".rpm"` > /home/jens/Mandrake7.0.txt

Man sollte auf die richtigen Hochkommata achten. Bei beidem geschieht im Prinzip das Gleiche, nur werden hier alle RPM-Pakete sämtlicher Unterverzeichnisse berücksichtigt.

Nun hat man eine Datei, in der alle Paketinformationen der auf der CD enthaltenen Pakete gespeichert sind. Durch den Einsatz von "grep" kann man auch hier herausfinden, ob unsere gesuchte Datei "libtralala" überhaupt vorhanden ist. Dazu gibt man

grep libtralala /home/jens/Mandrake7.0.txt

ein. Gibt es keine Ausgabe, so ist die gesuchte Datei nicht vorhanden. Dann macht man alles nochmal mit einer anderen CD. Gibt es genau eine Ausgabezeile von dem Format /irgendeinpfad/libtralala, dann hat man seine Datei auf dieser CD gefunden. Gibt es mehrere Zeilen, in denen das Wort "libtralala" vorkommt, dann muß man sich die wohl oder übel alle durchlesen, um herauszufinden, ob nun unsere gesuchte Datei darunter ist. So oder so haben wir nach langem hin und her endlich einen Verzeichnispfad und unsere Datei gefunden. Nun kann man mit einem Texteditor seiner Wahl diese Datei namens Mandrake7.0.txt öffnen und mit der eingebauten Suchfuntion nach /irgendeinpfad/libtralala suchen. Kwrite kann das zum Beispiel nicht, da die Datei zu groß für ihn ist! Jedenfalls wird man in der Datei bei der kompletten Eingabe des Pfades+libtralala den entsprechenden Eintrag finden. Dann scrollt man nur noch bis zur nächsten, darübergelegenen Paketbeschreibung hoch, und schaut, was da als RPM-Paket steht. Dies ist der Name des Paketes, wo unsere tolle Bibliothek libtralala drin ist. Mit einem fröhlichen rpm -ivh Paketname können wir diese nun installieren, bis uns die nächste unaufgelöste Abhängigkeit erwischt.

Der rpm bietet noch viel mehr! Diese zwei Beispiele waren nur sehr beschränkt, dafür aber aus dem Alltag gegriffen. Mit

rpm -qf Dateiname

kann man zum Beispiel herausfinden, zu welchem Paket eine bestimmte Datei gehört. Allerdings funktioniert das offensichtlich nur mit bereits installierten Paketen, so dass diese Option wohl nicht zum Suchen von noch nicht installierten Paketen geeignet ist.

Ansonsten hoffe ich, einen kleinen Einblick in die Vielseitigkeit des rpm gegeben zu haben und vor allem sollte jetzt klar sein, dass man damit Dinge machen kann, die sonst nicht so einfach sind. Angeblich soll es ein Script namens "rpmfind" geben, welches die Aufgaben erledigt, die ich eben auf so umständliche Art beschrieben habe. Doch dieses wollte sich bei mir nicht installieren lassen, da es eine bestimmte Version von rpm erwartet. In einem solchen Fall macht man das doch lieber per Hand und archiviert nebenbei die Paketinfos aller CD-Roms.

Artikelbewertung: 
No votes yet
War dieser Artikel hilfreich?