Springe zu: Hauptnavigation, Themennavigation, Seiteninhalt, Spezielle Seiten

dpkg - Installierte Pakete verwalten

Wenn man Softwarepakete mittels aptitude oder einem anderen Tool installiert, kommt im Hintergrund das Programm dpkg zum Einsatz. Wenn man das Tool aber direkt aufruft, stehen einem auch interessante Funtionen zur Verfügung. Ein paar stelle ich in diesem Artikel vor. Weitere Infos findest du in der Dokumentation zu dpkg.

Zustände eines Pakets

Ein software-Paket kann einen der folgenden Zustände haben:

installiert (installed)
Das Paket ist entpackt und korrekt konfiguriert.
halb-installiert (half-installed)
Die Installation eines Paketes wurde begonnen, aber aus irgendeinem Grund nicht abgeschlossen.
nicht-installiert (not-installed)
Das Paket ist auf dem System nicht installiert.
entpackt (unpacked)
Das Paket ist entpackt, aber nicht konfiguriert.
halb-konfiguriert (half-configured)
Das Paket ist entpackt und die Konfiguration wurde begonnen, aber aus irgendeinem Grund nicht abgeschlossen.
Config-Dateien (config-files)
Nur die Konfigurationsdateien existieren auf dem System.

Paketauswahl-Status

Die folgenden Stati betreffen die Paketauswahl:

installiere (install)
Das Paket ist zur Installation ausgewählt.
deinstalliere (deinstall)
Das Paket ist zur Deinstallation ausgewählt. Das bedeutet, dass die Konfigurationsdateien nicht entfernt werden sollen.
säubern (purge)
Das Paket ist zur vollständigen Deinstallation ausgewählt. Die Konfigurationsdateien sollen auch entfernt werden.

Unvollständig installierte Pakete ermitteln

Nicht immer verläuft die Installation oder Deinstallation eines Paketes erfolgreich. Mit der folgenden Anweisung sucht man auf dem System nach nur teilweise Installierten Paketen:

dpkg -C

Statt der Option -C kann auch --audit verwendet werden.

Stati aller installierten Pakete ausgeben und setzen

Die folgende Anweisung erstellt eine Liste aller installierten Pakete und deren Stati. Statt die Liste auf der Standardausgabe auszugeben, wird sie im Beipsiel in die Datei packages.txt geschrieben:

dpkg --get-selections "*" > packages.txt

Mit der Option --set-selections kann man die Paketstati einlesen lassen. Um die Liste der Pakete aus der Datei packages.txt zu lesen, wäre folgende Anweisung erforderlich:

dpkg --set-selections < packages.txt

Inhalt eines Paketes ausgeben

Wenn man ein Paket in Form einer .deb-Datei vorliegen hat, kann man sich mit der Option -c die enthaltenen Dateien und Verzeichnisse ausgeben lassen. Die Ausgabe kann dann z. B. so aussehen:

simon@etch:/var/cache/apt/archives$ dpkg -c pwgen_2.05-1_i386.deb
drwxr-xr-x root/root         0 2006-01-16 05:28 ./
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/share/
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/share/man/
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/share/man/man1/
-rw-r--r-- root/root      1940 2006-01-16 05:28 ./usr/share/man/man1/pwgen.1.gz
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/share/doc/
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/share/doc/pwgen/
-rw-r--r-- root/root      3219 2006-01-16 05:19 ./usr/share/doc/pwgen/changelog.Debian.gz
-rw-r--r-- root/root       262 2005-06-14 20:36 ./usr/share/doc/pwgen/copyright
-rw-r--r-- root/root      1698 2006-01-16 05:19 ./usr/share/doc/pwgen/changelog.gz
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/sbin/
drwxr-xr-x root/root         0 2006-01-16 05:28 ./usr/bin/
-rwxr-xr-x root/root     17040 2006-01-16 05:28 ./usr/bin/pwgen

Liste der Installierten Pakete ausgeben

Ruft man dpkg mit der Option -l auf, werden Informationen über alle auf dem System installierten Pakete ausgegeben. Gibt man ein Suchmuster an, werden auf das Muster passende Pakete ausgegeben. Dies passiert unabhängig davon, ob die Pakete auf dem System installiert sind oder nicht. Hier ein Beispiel:

simon@etch:~$ dpkg -l apache*

Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install.
|/ Fehler?=(kein)/Halten/R=Neuinst notw/X=beide (Status, Fehler: GROSS=schlecht)
||/ Name                   Version        Beschreibung
+++-======================-==============-============================================
un  apache                 <keine>        (keine Beschreibung vorhanden)
ii  apache-common          1.3.34-4.1     support files for all Apache webservers
un  apache-perl            <keine>        (keine Beschreibung vorhanden)
un  apache-ssl             <keine>        (keine Beschreibung vorhanden)
un  apache-utils           <keine>        (keine Beschreibung vorhanden)
ii  apache2                2.2.3-4        Next generation, scalable, extendable web se
un  apache2-common         <keine>        (keine Beschreibung vorhanden)
un  apache2-modules        <keine>        (keine Beschreibung vorhanden)
un  apache2-mpm-event      <keine>        (keine Beschreibung vorhanden)
un  apache2-mpm-itk        <keine>        (keine Beschreibung vorhanden)
un  apache2-mpm-perchild   <keine>        (keine Beschreibung vorhanden)
ii  apache2-mpm-prefork    2.2.3-4        Traditional model for Apache HTTPD 2.1
un  apache2-mpm-threadpool <keine>        (keine Beschreibung vorhanden)
pn  apache2-mpm-worker     <keine>        (keine Beschreibung vorhanden)
ii  apache2-utils          2.2.3-4        utility programs for webservers
ii  apache2.2-common       2.2.3-4        Next generation, scalable, extendable web se

Wie man der Ausgabe entnehmen kann, sind nicht alle möglichen Pakete installiert. Das Paket apache2-mpm-worker war einmal installiert, besitzt aber jetzt den Status säubern (purge).

Welche Dateien sind aus einem Paket tatsächlich installiert?

Wenn man wissen möchte, welche Dateien aus einem Paket auf dem System installiert wurden, stehen die Optionen -L und --listfiles zur Verfügung. Im folgenden Beispiel wird geprüft, welche Dateien aus dem Paket pwgen installiert wurden:

simon@etch:~$ dpkg -L pwgen
/.
/usr
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/pwgen.1.gz
/usr/share/doc
/usr/share/doc/pwgen
/usr/share/doc/pwgen/changelog.Debian.gz
/usr/share/doc/pwgen/copyright
/usr/share/doc/pwgen/changelog.gz
/usr/sbin
/usr/bin
/usr/bin/pwgen

Aus welchem Paket kommt eine Datei?

Wenn man wissen möchte, durch welches Paket eine bestimmte Datei auf dem System installiert wurde, hilft eine der Optionen -S oder --search weiter:

simon@etch:~$ dpkg -S /usr/sbin/ab
apache2-utils: /usr/sbin/ab

Datum der Veröffentlichung: Donnerstag, 09.08.2007

Nach oben

Diese Seite drucken