Startseite >> Tipps und Tricks >> Linux

Linux-Tipp 1

Wie lösche ich mehrere RPM-Pakete auf einmal?

Haben Sie sich auch schon einmal gefragt, wie man mehrere, zu einem Programm gehörige RPMs in einem Rutsch löschen kann? Am schnellsten klappt dies nicht etwa mit einem der zahlreichen Fronends à la kpackage, sondern auf der Linux-Kommandozeile (Shell bzw. Terminal).

Erste Möglichkeit

rpm -e --allmatches [eindeutige Teilzeichenkette der Paketnamen]

Beispiel:
rpm -e --allmatches gnome-games

Dieses Beispiel löscht alle installierten RPM-Pakete, in deren Paketbezeichnung die Zeichenkette "gnome-games" vorkommt. Konkret sind dies in der Regel "gnome-games-[Versionsnummer].rpm" und "gnome-games-devel-[Versionsnummer].rpm".

Doch Vorsicht: Der Systemverwalter (root) kann mit einem solchen Befehl ziemlich viel Schaden am System anrichten (man denke nur einmal an einen Befehl wie rpm -e --nodeps --allmatches lib). Deswegen sollte man immer zunächst überprüfen, welche Pakete durch den Befehl wirklich gelöscht würden. Am einfachsten geht dies mit dem Befehl

rpm -qa | grep [eindeutige Teilzeichenkette der Paketnamen]

Beispiel:
rpm -qa | grep gnome-games

Zweite Möglichkeit

Diese Variante ist vielleicht nicht so elegant wie die erste Möglichkeit und funktioniert in dieser Form auch nur für eine begrenzte Paketanzahl, dafür ist sie jedoch für Einsteiger leichter auszubauen:

rpm -e `rpm -qa | grep [eindeutige Teilzeichenkette der Paketnamen]`

Beispiel:
rpm -e `rpm -qa | grep gnome-games`

Achtung: Bitte tatsächlich `...` (Backticks) mit der Akzenttaste eingeben und keine Hochkommas ('...').

Jetzt stellt sich natürlich die Frage, warum dieser Befehl prinzipiell dieselbe Aufgabe erledigt wie der unter Möglichkeit 1 aufgeführte. Das liegt daran, dass alle gängigen Shells unter Linux (bash, ksh, zsh und so weiter) das oder die in Backticks eingeschlossene(n) Kommando(s) zuerst ausführen und dessen/deren Standardausgabe dann an Stelle des/der Backtick-Kommandos in die Kommandozeile eintragen (Kommandosubstitution).

Ein anderes Beispiel für eine Kommandosubstitution ist das folgende:

echo "Heute ist der `date '+%d.%m.%Y (%A)' ` "

Wenn Sie diesen Befehl eingeben, wird Linux Ihnen eine Zeile wie "Heute ist der 26.11.2003 (Mittwoch)" präsentieren.

Last but not least noch ein Hinweis zu unserem obigen RPM-Befehl: Bezüglich der Gefahren gilt das unter Möglichkeit 1 Gesagte analog.

Weiterführende Literatur:

Picture

Linux