--help
-c
, --contents
-i
, --install
--pending
, --configure
-r
, --remove
-P
, --purge
-l
, --list
-s
, --status
-S
, --search
-C
, --audit
-L
, --listfiles
--get-selections
--set-selections
--update-avail | --merge-avail Packages-Datei
--force-confnew
--force-depends
hold
dpkg
(http://wiki.debian.org/dpkg) ist die Basis der
Debian Paketverwaltung. dpkg
steht für „Debian GNU/Linux package
manager“. Da dpkg
mittlerweile auch von anderen Distributionen wie
Novell/SuSE und RedHat/Fedora
eingesetzt wird, ist die Bezeichnung nicht mehr ganz korrekt.
Die wichtigste Funktion von dpkg
besteht darin, das System in einem stabilen Zustand
zu halten. Da die Werkzeuge zur Paketverwaltung in anderen Disrtibutionen nicht den
Anforderungen der Debian Entwickler genügten, wurde dpkg
entworfen. Das Paketformat RPM, das u.a. von RedHat/Fedora- und Novell/SuSE-Distributionen verwendet wird,
prüft lediglich, ob eine benötigte Datei vorhanden ist. Ob diese Datei in der
gewünschten oder gar benötigten Version vorliegt, wird nicht geprüft.
Mit diesem Programm kommen Sie nur in seltenen Fällen in Berührung; meist werden Sie
Frontends wie apt-get
oder aptitude
benutzen. Hier folgen trotzdem einige nützliche
Beispiele, wie dpkg
eingesetzt werden kann.
Natürlich bringt auch dpkg
, wie alle guten Unix-Werkzeuge, eine eingebaute
Hilfefunktion mit. Mit der Option --help
kann man sich einen ersten Überblick über die
beachtliche Vielzahl von Optionen verschaffen.
Usage: dpkg -i|--install <deb file name> ... | -R|--recursive <dir> ... dpkg --unpack <deb file name> ... | -R|--recursive <dir> ... dpkg -A|--record-avail <deb file name> ... | -R|--recursive <dir> ... dpkg --configure <package name> ... | -a|--pending dpkg -r|--remove | -P|--purge <package name> ... | -a|--pending dpkg --get-selections [<pattern> ...] get list of selections to stdout dpkg --set-selections set package selections from stdin dpkg --update-avail <Packages-file> replace available packages info dpkg --merge-avail <Packages-file> merge with info from file ... --no-force-...|--refuse-... Stop when problems encountered --abort-after <n> Abort after encountering <n> errors Comparison operators for --compare-versions are: lt le eq ne ge gt (treat no version as earlier than any version); lt-nl le-nl ge-nl gt-nl (treat no version as later than any version); < << <= = => >> > (only for compatibility with control file syntax). Use `dselect' for user-friendly package management.
Die meisten Optionen haben eine kurze und eine lange Schreibweise, zum Beispiel -i
oder alternativ --install
; der Einfachheit halber wird im Folgenden
immer die Kurzform erwähnt. Einige wenige Optionen sind ausschließlich in der
ausführlichen Version verfügbar.
Diese Option zeigt den Inhalt eines Debian Paketes an, hierzu muss das Paket nicht zwingend installiert sein. Als weiterer Parameter ist der Dateiname des Debian Paketes anzugeben.
Mit dieser Option können Pakete installiert werden, die lokal im Dateisystem,
also auch auf einer gemounteten CD-ROM, vorliegen. Hierzu ist neben der Option -i
lediglich der Dateiname (ggf. inklusive Pfad)
anzugeben. Wenn eine Reihe Pakete installiert werden soll, so können Sie auch ein
Verzeichnis statt eines Dateinamens angeben; zusätzlich ist die Option -R
anzugeben. Mit dieser wird das Verzeichnis
rekursiv nach Debian Paketen durchsucht.
Mit --pending
können bereits entpackte, aber noch nicht
konfigurierte Pakete endgültig konfiguriert werden. Es kann zu einem solchen Zustand
kommen, wenn das System bei der Installation von Paketen auf einen Fehler trifft und
abbricht. Zu diesem Zeitpunkt können aber bereits andere (eventuell wichtige) Pakete
im aktuellen Installationsdurchlauf entpackt worden sein. Diese können durch Angabe
des Paketnamens gezielt konfiguriert und damit abschließend installiert werden.
Sollen nicht nur bestimmte, sondern alle bereits entpackten Pakete dieser
Prozedur unterzogen werden, so müssen Sie die Option -a
oder --pending
verwenden.
Mit der Option -r
, für „remove“, können Pakete entfernt
werden. Dazu geben Sie lediglich den Namen des Pakets oder die Namen der Pakete
(durch Leerzeichen getrennt) an, das/die gelöscht werden soll(en). Diese Option
löscht lediglich die Programmdateien eines Pakets. Die eigentlichen
Konfigurationsdateien (die nur sehr wenig Platz auf dem Datenträger einnehmen)
werden nicht gelöscht. Wird ein Paket einige Zeit später erneut installiert, so
liegt die alte Konfiguration noch vor und kann weiterhin genutzt werden.
Die Option „purge“ entfernt ein Paket komplett, inklusive aller Konfigurationsdateien, aus dem System.
Mit der Option -l
können die tatsächlichen Paketnamen ermittelt
werden. Diese weichen häufig von den eigentlichen Befehlen ab.
surimi:~$ dpkg -l mozilla* Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten | Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install. |/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht) ||/ Name Version Beschreibung +++-==============-==============-============================================ ii mozilla 1.0.0-1 Mozilla Web Browser - dummy package ii mozilla-browse 1.0.0-1 Mozilla Web Browser - core and browser rc mozilla-browse 0.0.20020226.1 An Open Source WWW browser for X and GTK+ (C ii mozilla-browse 0.0.20020610.0 An Open Source WWW browser for X and GTK+ (C ii mozilla-chatzi 1.0.0-1 Mozilla Web Browser - irc client pn mozilla-chatzi <keine> (keine Beschreibung vorhanden) pn mozilla-chatzi <keine> (keine Beschreibung vorhanden) pn mozilla-cvs <keine> (keine Beschreibung vorhanden) pn mozilla-cvs-de <keine> (keine Beschreibung vorhanden) ii mozilla-dev 1.0.0-1 Mozilla Web Browser - development files un mozilla-dmotif <keine> (keine Beschreibung vorhanden) ii mozilla-dom-in 1.0.0-1 A tool for inspecting the DOM of pages in Mo ii mozilla-dom-in 0.0.20020610.0 A tool for inspecting the DOM of pages in Mo ii mozilla-js-deb 1.0.0-1 JavaScript debugger for use with Mozilla pn mozilla-js-deb <keine> (keine Beschreibung vorhanden) rc mozilla-locale 0.9.9-3 Mozilla German Language/Region Package. pn mozilla-locale <keine> (keine Beschreibung vorhanden) pn mozilla-locale <keine> (keine Beschreibung vorhanden) ii mozilla-mailne 1.0.0-1 Mozilla Web Browser - mail and news support pn mozilla-mailne <keine> (keine Beschreibung vorhanden) pn mozilla-mailne <keine> (keine Beschreibung vorhanden) ii mozilla-psm 1.0.0-1 Mozilla Web Browser - Personal Security Mana pn mozilla-psm-cv <keine> (keine Beschreibung vorhanden) ii mozilla-psm-sn 0.0.20020610.0 PSM - Personal Security Manager for Mozilla un mozilla-smotif <keine> (keine Beschreibung vorhanden) pn mozilla-snapsh <keine> (keine Beschreibung vorhanden) pn mozilla-snapsh <keine> (keine Beschreibung vorhanden) ii mozilla-xmlter 1.0.0-1 Mozilla Web Browser - XML enabled pn mozilla-xmlter <keine> (keine Beschreibung vorhanden) pn mozilla-xmlter <keine> (keine Beschreibung vorhanden)
Problematisch ist hierbei, dass der Name des Pakets abgeschnitten wird; dies
können Sie durch Setzen der Variablen COLUMNS
ändern: COLUMNS=132 dpkg -l mozilla*
.
Hiermit kann der Status eines Pakets ermittelt werden. Es werden u.a. Informationen zum Status der Installation, der Version, der Größe, der Section und der Abhängigkeiten ausgegeben. So können sehr schnell die Ursachen für eventuelle Probleme bei der Installation von weiteren Paketen ermittelt werden.
Package: bash Essential: yes Status: install ok installed Priority: required Section: base Installed-Size: 1288 Maintainer: Matthias Klose <doko@debian.org> Source: bash (2.05b-2-8.1) Version: 2.05b-8.1 Replaces: bash-doc (< 2.05-1), bash-completion Depends: base-files (> 2.1.12) Pre-Depends: libc6 (> 2.3.1-1), libncurses5 (> 5.3.20021109-1) Suggests: bash-doc Conflicts: bash-completion Conffiles: /etc/skel/.bashrc c5f1155761187900cbb3b6554c2b2533 /etc/skel/.bash_profile ee190fd94cb7bfe8a663447386c065e8 /etc/bash.bashrc e218a2979b01db4e9c3ae19c94294a57 /etc/bash_completion 14dde46ca4fb4af4d1f22f0f0fc2ef8c Description: The GNU Bourne Again SHell Bash is an sh-compatible command language interpreter that executes commands read from the standard input or from a file. Bash also incorporates useful features from the Korn and C shells (ksh and csh). . Bash is ultimately intended to be a conformant implementation of the IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2). . Included in the bash package is the Programmable Completion Code, by Ian Macdonald. . Statically linked.
Für den fortgeschrittenen Systemadministrator ist an dieser Stelle interessant, dass hier auch die MD5-Checksummen der Konfigurationsdateien ausgegeben werden.
Ermitteln von Checksummen | |
---|---|
Um die Checksumme eines gesamten Pakets zu ermitteln, benutzt der
Administrator das Programm
fr@sushi:~$ debsums ssh usr/bin/ssh OK usr/bin/scp OK usr/bin/ssh-add OK usr/bin/ssh-agent OK usr/bin/ssh-keygen OK usr/bin/ssh-keyscan OK usr/bin/sftp OK usr/bin/ssh-copy-id OK usr/bin/ssh-argv0 OK usr/sbin/sshd OK usr/lib/ssh-keysign OK usr/lib/sftp-server OK usr/share/man/man1/scp.1.gz OK usr/share/man/man1/ssh-agent.1.gz OK usr/share/man/man1/ssh-keygen.1.gz OK ...
|
Mit der Option -S
kann ermittelt werden, zu welchem Paket eine Datei
gehört. Dies trifft lediglich auf bereits installierte Pakete zu. Eine Suche in
nicht installierten Paketen ist auf diesem Wege nicht möglich.
fr@surimi:~$ dpkg -S gdm.conf gdm: /etc/gdm/factory-gdm.conf gdm: /etc/gdm/gdm.conf fr@surimi:~$ dpkg -S /etc/gdm/gdm.conf gdm: /etc/gdm/gdm.conf
Hierbei kann das Weglassen oder Hinzufügen des Pfades zu der gesuchten Datei zu unterschiedlichen Ergebnissen führen.
Durchsucht das System nach unvollständig installierten Paketen und versucht, sinnvolle Vorschläge zu unterbreiten, welche Schritte notwendig sind, um diese Pakete in einen funktionsfähigen Zustand zu versetzen.
Zeigt alle Dateien an, die zum angegebenen Paket gehören.
$ dpkg -L bash /. /bin /bin/bash /etc /etc/skel /etc/skel/.bashrc /etc/skel/.bash_profile /etc/bash_completion.d /etc/bash.bashrc /etc/bash_completion /usr /usr/share /usr/share/doc /usr/share/doc/bash /usr/share/doc/bash/completion-contrib /usr/share/doc/bash/completion-contrib/gnatmake /usr/share/doc/bash/completion-contrib/bitkeeper ... /usr/share/man/man7 /usr/share/man/man7/bash-builtins.7.gz /usr/bin /usr/bin/bashbug /bin/rbash /bin/sh /usr/share/man/man1/sh.1.gz
Gibt, ohne weitere Parameter, eine Liste aller installierten Pakete aus. Wird zusätzlich ein „*“ angegeben, so werden alle Pakete mit dem aktuellen Zustand ausgegeben. Dies zeigt also auch zu löschende und nicht installierte Pakete an.
Diese Ausgabe kann in eine Datei geschrieben werden und mittels der Option --set-selections
(beispielsweise auf einem anderen
System oder aus einem Backup) wieder eingelesen werden. Somit können einzelne
Systeme sehr leicht dupliziert werden. Auch kann auf diesem Wege ein System nach
einem Hardware-Ausfall wiederhergestellt werden.
Beispiel:
dpkg --get-selections \* > /tmp/PAKETLISTE
Liest eine zuvor mit --get-selections
erzeugte Paketliste wieder ein.
Beispiel:
dpkg --set-selections < /tmp/PAKETLISTE
Abhängig von den Informationen in der Datei PAKETLISTE
werden so alle Pakete aus dieser Datei in
der Paketdatenbank mit einem Status gekennzeichnet. Ein darauf folgendes apt-get dselect-upgrade
wird die gewünschten Aktionen
durchführen.
Aktualisiert die Informationen über verfügbare Pakete. Mit der Aktion
--merge-avail
werden die bestehenden
Informationen mit den Informationen aus der angegebenen Packages-Datei zusammengeführt.
Mit der Aktion --update-avail
wird die alte Information durch die
Information aus der Packages-Datei ersetzt.
dpkg
speichert alle Aufzeichnungen
über die verfügbaren Pakete in /var/lib/dpkg/available
.
Ein einfacheres Kommando, um die available
-Datei in einem Aufruf
abzurufen und zu aktualisieren, ist dselect update
.
Sollte einmal aus Versehen eine der Konfigurationsdateien verschwunden sein oder
eine andere wichtige Datei fehlen, so kann ein komplettes Paket einfach erneut
installiert werden. Hierzu müssen Sie sich zunächst das betroffene Paket besorgen,
beispielsweise mit apt-get -d install paket
. Nun kann das Paket
installiert werden. Die Option --force-confnew
überschreibt dabei alle
Konfigurationsdateien:
dpkg -i --force-confnew /var/cache/apt/archives/paket.deb
Diese Option kann zusammen mit jeder anderen Option von dpkg
eingesetzt werden, führt jedoch im Allgemeinen
zu einem Versionschaos. Hiermit werden alle Abhängigkeiten eines Pakets ignoriert
und die gewünschte Aktion (beispielsweise „install“) ausgeführt.
Alle Warnungen des Paketmanagements werden ignoriert.
Wird dpkg
mit dieser Option eingesetzt, so ist es kaum
mehr möglich, danach apt-get
sinnvoll zu benutzen, da apt-get
feststellen wird, dass bestimmte
Abhängigkeiten nicht erfüllt werden können. In einem solchen Fall können Sie
versuchen, mit apt-get -f install
die Situation zu bereinigen. Dies
wird aber das zuvor mit --force-depends
behandelte Paket in einen
unbrauchbaren Zustand versetzen bzw. löschen.
Pakete können im Debian Paketmanagement unterschiedliche Zustände haben; einer davon ist „hold“. Pakete mit diesem Zustand werden bei einem Update nicht aktualisiert. Um eine neue Version dieses Pakets zu installieren, muss das Paket gezielt installiert werden. Ein einzelnes Paket kann mit dem Kommando
echo <paketname> "hold" | dpkg --set-selections
auf „hold“ gesetzt werden.
Sollen mehrere Pakete auf einmal in den Zustand „hold“ gesetzt werden, so kann dies wie folgt geschehen:
dpkg --set-selections << EOF <paketname1> hold <paketname2> hold <paketname3> hold <paketname4> hold EOF
Natürlich kann der Status „hold“ auch wieder zurückgesetzt werden, dies geschieht wie folgt:
echo <paketname> "install" | dpkg --set-selections
Die Abfrage der Paketdatenbank nach allen Paketen die aktuell den Status „hold“ besitzen ist ebenso einfach:
dpkg --get-selections | grep hold
© 1999 - 2024 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.