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:
- Öffnen Sie zunächst ein Terminalfenster. Am schnellsten geht das mit dem Schnellstarter [Alt]+[F2] – im Befehlsfenster geben Sie
konsole(unter KDE) odergnome-terminal(unter Gnome) ein, jeweils komplett in Kleinbuchstaben. Im neuen Terminalfenster erwartet Sie ein Shell-Prompt. - Mit dem Befehl
ps ax | taillassen Sie sich die zuletzt gestarteten Programme anzeigen (Abbildung 1, oben). In der Liste finden Sie auch einen Eintrageog. 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 dannps ax(ohne dentail-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. - 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. - 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) oderdpkg -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. - Wollen Sie das Paket nun löschen, sind noch zwei Schritte notwendig: Zuerst werden Sie mit
suund darauf folgender Eingabe des Administratorpassworts (OpenSuse, Mandriva) oder mitsudo suund anschließender Eingabe Ihres eigenen Passworts (Ubuntu) zum Systemverwalter root, -
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.
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.
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.
[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/



