Paket-Datenbank mit “rpm” und “dpkg” abfragen

Aus EasyLinux 02/2009

Paket-Datenbank mit “rpm” und “dpkg” abfragen

© Brand-X

Direktzugriff

Alle Linux-Distributionen benutzen eine Paketdatenbank, in der Informationen zu den installierten Softwarepaketen gespeichert sind. Diese können Sie mit den Kommandozeilenprogramm “rpm” und “dpkg” abrufen.

In der vergangenen Ausgabe haben wir im Guru-Training die Kommandos zypper, apt-get / apt-cache und urpmi vorgestellt [1], mit denen Sie unter OpenSuse, Ubuntu und Mandriva Linux auf die Paketdatenbanken zugreifen. All diese Tools sind komfortable (Textmodus-)Frontends für elementarere Tools: rpm (OpenSuse, Mandriva) und dpkg (Ubuntu). Jetzt liefern wir noch ergänzende Informationen, die Ihnen helfen, einige Dinge mit rpm oder dpkg zu erledigen, wo die anderen Tools versagen.

Wo liegt die Software?

Wenn Sie damit beginnen, die zahlreichen unbekannten Verzeichnisse Ihres Linux-Systems jenseits des Home-Verzeichnisses in /home zu erforschen, stellt sich früher oder später die Frage: Wo bringt eigentlich Linux all die Dateien unter, die zu den verschiedenen Softwarepaketen gehören, und wie kann man einzelne Programme wieder entfernen?

Während sich die erste Frage noch übersichtlich beantworten lässt (ausführbare Programme liegen meist in /usr/bin/, /bin/, /usr/X11R6/bin/ oder einem Unterverzeichnis von /opt, ihre Konfigurationsdateien finden sich im zentralen Verzeichnis /etc/), ist für das Entfernen eines Programmpakets manchmal ein wenig Recherche notwendig. In vielen Fällen führt der kürzeste Weg über die Softwareverwaltung Ihrer Linux-Distribution. In der jeweiligen Detailansicht sehen Sie alle installierten Pakete und können diese abwählen.

Unbekannte Pakete

Schwieriger wird es aber, wenn Sie den Paketnamen gar nicht kennen, weil dieser nicht mit dem Programmnamen identisch ist. Haben Sie etwa ein Programm über das Startmenü aufgerufen, kennen Sie damit noch nicht unbedingt dessen Namen.

Mit einem der beiden Kommandozeilenprogramme rpm und dpkg, die unter OpenSuse und Mandriva Linux bzw. unter Ubuntu (und Debian) zur Verwaltung der Softwarepakete verwendet wird, sowie mit einigen zusätzlichen Shell-Tools können Sie die gesuchten Informationen schnell finden.

Haben Sie nun zum Beispiel unter SuSE Linux über Grafik / Anzeige / Bildbetrachter (Eye of Gnome) einen Bildbetrachter gestartet, den Sie löschen wollen, können Sie folgendermaßen vorgehen:

  1. Öffnen Sie zunächst ein Terminalfenster. Am schnellsten geht das mit dem Schnellstarter [Alt]+[F2] – im Befehlsfenster geben Sie konsole (unter KDE) oder gnome-terminal (unter Gnome) ein, jeweils komplett in Kleinbuchstaben. Im neuen Terminalfenster erwartet Sie ein Shell-Prompt.
  2. Mit dem Befehl ps ax | tail lassen Sie sich die zuletzt gestarteten Programme anzeigen (Abbildung 1, oben). In der Liste finden Sie auch einen Eintrag eog. Nun wissen Sie schon einmal, dass das Programm, welches Sie über den Menüpunkt Eye of Gnome gestartet haben, als Programmdatei eog heißt. War das Programm nicht in der Liste, dann versteckt es sich in einem der weiter vorne liegenden Programmeinträge. Geben Sie dann ps ax (ohne den tail-Zusatz) ein: Die Liste ist nun deutlich länger und scrollt vielleicht aus dem Fenster heraus. Mit dem Scrollbalken können Sie aber zurück blättern und die gesamte Prozessliste durchsuchen.
  3. Im nächsten Schritt gilt es herauszufinden, in welchem Verzeichnis sich das Programm versteckt. Dazu dient der Befehl which eog, der die Frage mit /opt/gnome/bin/eog beantwortet.
  4. Jetzt kommt erstmals rpm oder dpkg zum Einsatz. Sie wollen aus der Paketdatenbank auslesen, in welchem RPM- oder Debian-Paket die Datei steckt – der Befehl lautet dann rpm -qf /opt/gnome/bin/eog (query file: Anfrage nach Datei) oder dpkg -S /opt/gnome/bin/eog (search: Suche). Die Ausgabe (Abbildung 1) ist nicht weiter überraschend: Das Paket heißt auch eog; die dahinter folgenden Ziffern geben die Programmversion an. Die Namensgleichheit von Programm und Paket ist oft, aber nicht immer gegeben.
  5. Wollen Sie das Paket nun löschen, sind noch zwei Schritte notwendig: Zuerst werden Sie mit su und darauf folgender Eingabe des Administratorpassworts (OpenSuse, Mandriva) oder mit sudo su und anschließender Eingabe Ihres eigenen Passworts (Ubuntu) zum Systemverwalter root,
  6. und schließlich entfernen Sie das Paket mit rpm -e eog bzw. dpkg -r eog. Die jeweiligen Optionen stehen dabei für die englischen Worte “erase” (löschen) bzw. “remove” (entfernen). Ubuntu-Anwender können statt dpkg -r eog auch apt-get remove eog schreiben und damit das Tool aus dem letzten Guru-Training einsetzen.

    Abbildung 1: Wie heißt der Grafikbetrachter und zu welchem Paket gehört er? Die letzten zwei Befehle löschen das Paket.

    Abbildung 1: Wie heißt der Grafikbetrachter und zu welchem Paket gehört er? Die letzten zwei Befehle löschen das Paket.

Die Befehle which und rpm bzw. which und dpkg können Sie übrigens bequem zu einer einzigen Befehlszeile zusammenfassen, wie das Beispiel im Listing-Kasten zeigt.

Mehr Informationen

Die Kommandos rpm und dpkg bieten aber noch mehr Abfragemöglichkeiten. Ein Blick in die Manpages liefert viele Hinweise, was sich noch alles mit den Tools anfangen lässt. Mit rpm -ql (query, list) oder dpkg -L (list files) können Sie etwa nachfragen, welche Dateien zu einem Paket gehören. So liefert der Aufruf rpm -ql eog bzw. dpkg -L eog eine vollständige Dateiliste (Abbildung 2).

Abbildung 2: Alles, was Sie über ein Programm wissen müssen: Zu welchem Paket gehört es? Was ist das für ein Paket? Was gibt es noch in diesem Paket? Links die "rpm"-Kommandos, rechts die entsprechenden "dpkg"-Aufrufe.

Abbildung 2: Alles, was Sie über ein Programm wissen müssen: Zu welchem Paket gehört es? Was ist das für ein Paket? Was gibt es noch in diesem Paket? Links die “rpm”-Kommandos, rechts die entsprechenden “dpkg”-Aufrufe.

Auch über Pakete, die noch nicht installiert sind, aber als Paketdatei (mit Dateiendung .rpm oder .deb) auf Ihrem Rechner liegen, können Sie Informationen erhalten:

rpm -qlp neuespaket-1.2.3-1.i386.rpm

bzw. für Debian-Pakete:

dpkg-deb -c neuespaket_1.2.3-1_i386.deb

Mit rpm -qip oder dpkg-deb -I erfahren Sie, wie ein Paket heißt, welche Software enthalten ist und wer es erstellt hat. Das kann bei Paketen, die Sie aus dem Internet gezogen haben, oft hilfreich sein, weil es einen Hinweis darauf gibt, ob es für Ihre Linux-Distribution erstellt wurde. Besonders interessant sind dort die Felder Vendor bzw. Maintainer (wer hat das Paket gebaut?) und bei RPM-Paketen das Feld License (unter welcher Lizenz wird das Paket vertrieben?). Aus dem meist längeren Eintrag unter Description können Sie erkennen, zu welcher Art Software das Paket gehört.

Installieren geht auch

Haben Sie zu einer Paketdatei alle interessanten Informationen gefunden, entscheiden Sie vielleicht, es zu installieren – das ist eine der Hauptaufgaben der Paket-Tools, und beide verwenden dafür die Option -i – hier sind aber Root-Rechte notwendig, denn Software-Installation ist ein Eingriff ins System.

Schlägt die Installation fehl, liegt das vielleicht an unerfüllten Abhängigkeiten oder Konflikten. Beide Pakettools bieten Optionen an, um sich über solche Widrigkeiten hinweg zu setzen und eine Installation zu erzwingen – das ist aber selten eine gute Idee. Mehr dazu lesen Sie im Kasten Letzte Möglichkeit: Installation erzwingen.

Wenn schon eine ältere Version des Pakets installiert war, handelt es sich um ein Update: rpm erwartet dann statt -i die Option -U (für Update), während dpkg mit der Option -i sowohl normale Installationen als auch Aktualisierungen erledigt.

Letzte Möglichkeit: Installation erzwingen

Wenn der Paketmanager die Installation (oder das Update) eines Softwarepakets verweigert, gibt es in der Regel einen sehr guten Grund dafür [3]:

  • Nicht erfüllte Abhängigkeiten (engl.: dependencies) bedeuten, dass noch weitere Pakete nötig sind, damit die Programme aus dem aktuell zu installierenden Paket auch laufen kann. Meist geht es dabei um Bibliotheken, welche die Programme beim Start nachladen und die sich in anderen Paketen befinden.
  • Konflikte bedeuten, dass bereits ein anderes Paket installiert ist, das Software enthält, welche sich von den angebotenen Funktionen oder bei der Wahl der verwendeten Dateinamen mit dem zu installierenden Paket überschneidet. Eine erzwungene Installation beider Pakete führt oft dazu, dass eines der Pakete (das schon vorher installierte) nicht mehr benutzbar ist.

Gelegentlich – und das gilt für RPM-Systeme häufiger als für solche, die mit DEB-Paketen arbeiten – sind die Abhängigkeits- und Konflikt-Informationen in den Paketen einfach fehlerhaft, und einer erfolgreichen Installation stehen nur die automatischen Prüfungen entgegen. Wenn Sie den Verdacht haben, dass dies der Fall ist, können Sie sich über die Sicherheitsmechanismen hinwegsetzen und die Installation erzwingen.

Die rpm-Variante sieht so aus:

rpm -i --nodeps --force Paket.rpm

während bei dpkg die Optionen

dpkg -i --force-depends --force-conflicts Paket.deb

zum Ziel führen. Bei dpkg können Sie sehr genau festlegen, welche potenziellen Fehlerquellen dieses Tool ignorieren soll – Abbildung 3 zeigt eine Auswahl der Prüfungen, die Sie im Paketmanager mit Optionen der Form --force-... abschalten können.

Abbildung 3: Eine ganze Reihe von Sicherheitsprüfungen können Sie mit "dpkg"-Optionen abschalten – empfehlenswert ist das aber nicht.

Abbildung 3: Eine ganze Reihe von Sicherheitsprüfungen können Sie mit “dpkg”-Optionen abschalten – empfehlenswert ist das aber nicht.

Infos

[1] Artikel zu Zypper, APT und Urpmi: Marcel Hilzinger und Hans-Georg Eßer, “Full-Speed-Installation”, EasyLinux 01/2009, S. 122 ff., https://www.linux-community.de/artikel/17476

[2] LinuxUser-Artikel zu Paketmanagern: Martin Steigerwald, “Sauber einsortiert”, LinuxUser 10/2006, S. 88 ff., https://www.linux-community.de/artikel/11441

[3] Artikel zu Abhängigkeiten: Hans-Georg Eßer, “Netz der Abhängigkeiten”, EasyLinux 06/2003, S. 20 f., http://www.easylinux.de/2003/06/020-abhang/

EasyLinux 02/2009 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben