claim.gif
Linux Magazin Linux User Easy Linux Ubuntu User International Linux Community
Erschienen in EasyLinux 07/2006   »   Ausgabe bestellen

Paketverwaltung mit "rpm" und "dpkg"

Packstation auf Kommando

Heike Jurzik


YaST, RpmDrake, Adept, Synaptic & Co. leisten gute Dienste, wenn es um die Software-Verwaltung geht. Was die grafischen Paket-Manager nicht oder nur unzureichend hinbekommen, erreichen Sie mit kurzen Befehlen in der Shell.

Die von EasyLinux unterstützten Distributionen liefern Software in fertig kompilierten Paketen aus, so dass Sie keine Programme aus den Quelltexten übersetzen müssen. Suse Linux und Mandriva 2006 setzen auf den Red Hat Package Manager (RPM), Kubuntu und Ubuntu als Debian-Ableger verwenden DPKG. RPM-Pakete erkennen Sie an der Dateiendung .rpm, Debian- und somit auch Kubuntu-Pakete tragen die Endung .deb.


Quelltext: Software liegt in der Regel im Quelltext (englisch "source code"), also einem für Menschen lesbaren in einer Programmiersprache geschriebenen Textformat, vor. Mit einem Compiler übersetzt man Quelltexte in ein ausführbares Programm. Das ist relativ umständlich und für Linux-Neulinge nicht zu empfehlen, weswegen die meisten Distributionen kompilierte Paketen enthalten.

Installieren Sie ein fertig geschnürtes Paket, packt der Paketverwalter Ihrer Distribution es aus und sorgt dafür, dass alle Dateien am richtigen Ort landen. Benötigt ein Programm weitere Komponenten, um zu funktionieren, weist der Paket-Manager darauf hin; im Idealfall installiert er fehlende Komponenten sogar automatisch.

Wenn Sie ein Paket zu einem späteren Zeitpunkt wieder deinstallieren, sorgt der Paket-Manager dafür, dass alle zugehörigen Dateien von der Platte verschwinden.

Die grafischen Paketverwalter YaST (Suse Linux), RpmDrake (Mandriva), Adept und Synaptic (beide Kubuntu) erledigen diese Aufgaben bravourös. Im Hintergrund der grafischen Tools werkeln die Programme rpm, dpkg und die APT-Tools -- ein Blick hinter die Kulissen lohnt sich, denn auf der Kommandozeile zeigen die Programme ihr ganzes Können.

Ab auf die Shell

Einige der im Artikel vorgestellten Befehle führen Sie als Administrator aus. Dazu gehören beispielsweise Kommandos, die etwas installieren oder löschen. Reine Abfragen, z. B. zum Status eines Pakets, funktionieren in der Regel auch mit "normalen" Benutzerrechten. Wenn ein Kommando Root-Rechte benötigt, erkennen Sie das in den Listings daran, dass der Prompt (hinter dem Sie die Befehle eingeben) als Rautezeichen (#) auftaucht:

# <befehl>

Kommandos, die Sie unter Ihrer normalen Benutzerkennung eingeben, haben in den Listings ein Dollarzeichen $ als Prompt:

$ <befehl>

Um unter Mandriva und Suse Linux Root-Rechte zu erlangen, tippen Sie am Shell-Prompt

§ su -

und geben auf Aufforderung das Kennwort des Systemverwalters ein. Unter Kubuntu tippen Sie hingegen

$ sudo -s

und authentifizieren sich mit dem eigenen Passwort.

Die richtige Frage stellen

Wer eine Liste aller installierten Pakete zusammenstellen möchte, muss nicht mit Zettel und Stift bewaffnet die Übersicht des Paket-Managers abschreiben; viel schneller geht es auf der Shell (Abbildung 1). Auf RPM-basierten Systemen tippen Sie dazu

$ rpm -qa > installiert.txt

und der entsprechende dpkg-Aufruf heißt:

$ dpkg --get-selections > installiert.txt

Über den Operator > leiten Sie die recht lange Ausgabe in die Datei installiert.txt um [1], die Sie anschließend in einem Text-Editor oder -betrachter wie less anzeigen.

Abb. 1: Die Zusammenfassung aller installierten Pakete -- einmal im grafischen Paket-Manager, einmal als Liste auf der Shell.

Weiterhin können Sie gezielt Informationen zu einzelnen Paketen abfragen. Wer Näheres zu einem bereits installierten Paket erfahren möchte, schreibt rpm -qi Paket bzw. dpkg -s Paket; Abbildung 2 zeigt, was die Distributionen alles verraten.

Abb. 2: "rpm -qi" und "dpkg -s" im Vergleich.

Dabei ist guter Rat oft teuer: Nicht immer heißen die Pakete so wie die darin enthaltenen Programme. Das Tool ls beispielsweise, das den Inhalt von Verzeichnissen auf der Shell anzeigt, versteckt sich im Paket coreutils, wie es das folgende Kommando verrät:

$ rpm -qf `which ls` 
coreutils-5.3.0-20

Der entsprechende Befehl unter Debian-basierten Systemen lautet:

$ dpkg -S `which ls`
coreutils: /bin/ls

Beim Aufruf rpm -qf bzw. dpkg -S benötigen Sie den vollen Pfad einer Datei -- deswegen sind die obigen Beispiele mit einem which-Aufruf kombiniert, der den vollständigen Pfad zu ls heraus findet.

Wer sich dafür interessiert, welche Dateien zu einem Paket gehören, erfragt dieses unter RPM-Systemen mit

$ rpm -ql coreutils
/bin/basename
/bin/cat
/bin/chgrp
...

und auf Debian-basierten Distributionen mit dem Kommando

$ dpkg -L coreutils
/bin
/bin/cat
/bin/chgrp
/bin/chmod
...

Ist das Paket noch nicht installiert, sondern liegt als .rpm- oder .deb-Datei auf der Platte, ist auch das kein Problem: Mit rpm -qlp Paket.rpm bzw. dpkg --contents Paket.deb zeigen Sie die enthaltenen Dateien an.

Für alle zuletzt gezeigten Befehle gilt: Damit die mitunter recht lange Ausgabe der Kommandos nicht aus dem Terminal heraus scrollt, leiten Sie diese jeweils über ein Pipe-Zeichen (|), das Sie über [AltGr-<] erreichen, an das Programm less weiter und betrachten die Ausgabe seitenweise, z. B. rpm -ql coreutils | less.

Pakete installieren...

Um eines oder mehrere Pakete einzuspielen, können Sie diese meist im Konqueror mit der rechten Maustaste anklicken und über Öffnen mit im Kontextmenü den Paket-Manager der Distribution zur Installation bemühen. Dasselbe erreichen Sie schneller auf der Kommandozeile mit einem der folgenden Befehle:

# rpm -i Paket.rpm
# dpkg -i Paket.deb

Ein ganzes Verzeichnis voller Pakete können Sie ebenfalls übergeben, beispielsweise, indem Sie Paket.rpm oder Paket.deb im Aufruf durch downloads/*.rpm bzw. downloads/*.deb ersetzen. Während Debians Paket-Manager von sich aus anzeigt, was im Hintergrund passiert, müssen Sie rpm explizit darum bitten; dazu stehen die Optionen -v ("verbose", ausführliche Anzeige) und -H (blendet Fortschrittsbalken ein) zur Verfügung:

# rpm -ivh Paket.rpm
Preparing... ################### [100%]
1:paket      ################### [100%]

In der Regel weisen rpm und dpkg darauf hin, wenn es ungelöste Abhängigkeiten zu anderen Paketen gibt und der Installationskandidat sich nicht ohne weiteres einspielen lässt, z. B.:

error: Failed dependencies:
  kdelibs3 >= 3.5.2 is needed by Paket.rpm

Auch wenn sowohl rpm als auch dpkg Parameter mitbringen, die Abhängigkeiten ignorieren und sogar die Installation erzwingen, ist die Installation in solchen Fällen in der Regel nicht sinnvoll, weil das Programm anschließend meist nicht funktioniert.

... und wieder löschen

Wie bei den im Abschnitt Die richtige Frage stellen gezeigten Abfrageoptionen übergeben Sie zum Löschen nicht den Namen der .rpm- oder .deb-Datei, sondern den reinen Paketnamen ohne Versionsnummer. Die Löschbefehle heißen rpm -e Paket und dpkg -r Paket.

Angst, das System zu zerstören, müssen Sie bei den Löschkommandos nicht haben: rpm und dpkg weisen darauf hin, wenn ein Paket noch gebraucht wird:

# dpkg -P Paket
dpkg: Abhängigkeitsproblem verhindert das Löschen von paket:
...
# rpm -E Paket
error: Failed dependencies:
  paket = 1.3.1 is needed by (installed) anderes_paket-1.3-7
...

Über eine solche Warnung sollten Sie sich nur hinwegsetzen, wenn Sie die Abhängigkeit von Hand lösen, z. B. durch anschließende Neuinstallation eines ähnlichen Pakets. (hge)

Infos
[1] Ausgabeumleitungen auf der Shell: Heike Jurzik, "Genial gelenkig -- Umleitungs-Operatoren", EasyLinux 09/2005. S. 84 ff., http://www.easylinux.de/2005/09/084-umleitungen/

Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links" nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedruckten Fassung entsprechen.

Druckerfreundliche Version | Feedback zu dieser Seite | Datenschutz | © 2012 Linux New Media AG | Last modified: 2008-11-05 16:58

[Linux-Magazin] [LinuxUser] [Linux-Community] [Admin-Magazin] [Ubuntu User] [Smart Developer] [Linux Events] [Linux Magazine] [Ubuntu User] [Admin Magazine] [Smart Developer] [Linux Magazine Poland] [Linux Community Poland] [Linux Magazine Brasil] [Linux Magazine Spain] [Linux Technical Review]