dpkg(1) | dpkg-Programmsammlung | dpkg(1) |
dpkg - Paketverwalter für Debian
dpkg [Option …] Aktionen
Dieses Handbuch ist für Benutzer gedacht, die die Befehlszeilenoptionen und Paketzustände von dpkg detaillierter verstehen wollen, als durch dpkg --help beschrieben ist.
Es sollte nicht von Paketbetreuern verwendet werden, die verstehen wollen, wie dpkg ihr Paket installieren wird. Die Beschreibung der Aktionen von dpkg beim Installieren und Entfernen von Paketen ist besonders unzulänglich.
dpkg ist ein Werkzeug, um Debian-Pakete zu installieren, zu bauen, zu entfernen und zu verwalten. Die primäre und benutzerfreundlichere Oberfläche für dpkg ist aptitude(1). dpkg selbst wird komplett über Befehlszeilenoptionen gesteuert, die aus genau einer Aktion und Null oder mehreren Optionen bestehen. Der Aktionsparameter teilt dpkg mit, was zu tun ist, und die Optionen steuern die Aktionen in irgendeiner Weise.
dpkg kann auch als Oberfläche für dpkg-deb(1) und dpkg-query(1) verwendet werden. Die Liste der unterstützten Aktionen kann im Abschnitt AKTIONEN gefunden werden. Falls so eine Aktion angetroffen wird, führt dpkg einfach dpkg-deb oder dpkg-query mit den übergebenen Parametern aus, allerdings werden derzeit keine spezifischen Optionen an diese übergeben. Um solche Optionen zu verwenden, müssen die Backends direkt aufgerufen werden.
dpkg verwaltet einige nützliche Informationen über verfügbare Pakete. Die Informationen sind in drei Klassen unterteilt: Status, Auswahlstatus und Schalter. Diese Werte sind hauptsächlich zur Änderung durch dselect gedacht.
Die Installation besteht aus folgenden Schritten:
1. Die Steuerdateien aus dem neuen Paket wird entnommen.
2. Falls eine andere Version des gleichen Pakets vor der neuen Installation installiert war, dann wird das prerm-Skript des alten Paketes ausgeführt.
3. Das preinst-Skript wird ausgeführt, falls dies vom Paket bereitgestellt wird.
4. Die neuen Dateien werden entpackt und gleichzeitig die alten Dateien gesichert, so dass diese, falls etwas schief geht, wiederhergestellt werden können.
5. Falls eine andere Version des gleichen Pakets vor der neuen Installation installiert war, dann wird das postrm-Skript des alten Paketes ausgeführt. Beachten Sie, dass dieses Skript nach dem preinst-Skript des neuen Pakets ausgeführt wird, da neue Dateien zeitgleich zu der Entfernung alter Dateien geschrieben werden.
6. Das Paket wird konfiguriert. Lesen Sie --configure für detaillierte Informationen, wie dies geschieht.
Um ein Paket zu rekonfigurieren, das bereits konfiguriert wurde, verwenden Sie stattdessen den Befehl dpkg-reconfigure(8).
Die Konfiguration besteht aus folgenden Schritten:
1. Die Conffiles werden entpackt und gleichzeitig die alten Conffiles gesichert, so dass diese, falls etwas schief geht, wiederhergestellt werden können.
2. Das postinst-Skript wird ausgeführt, falls dies vom Paket bereitgestellt wird.
Entfernung eines Paketes besteht aus den folgenden Schritten:
1. Das prerm-Skript wird ausgeführt
2. Die installierten Dateien werden entfernt
3. Das postrm-Skript wird ausgeführt
Hinweis: Einige Konfigurationsdateien können dpkg nicht bekannt sein, da sie separat durch die Konfigurationsskripte angelegt und verwaltet werden. In diesem Fall wird dpkg sie nicht selbst entfernen, sondern das Skript postrm (das von dpkg aufgerufen wird) des Pakets muss sich während des vollständigen Löschens um das Entfernen kümmern. Natürlich betrifft dies nur Dateien in den Systemverzeichnissen, nicht Konfigurationsdateien, die in die Home-Verzeichnisse der individuellen Benutzer geschrieben werden.
Endgültiges Löschen eines Paketes besteht aus den folgenden Schritten:
1. Das Paket wird entfernt, falls es noch nicht entfernt ist. Lesen Sie --remove für detaillierte Informationen, wie dies erfolgt.
2. Das postrm-Skript wird ausgeführt.
Derzeit ist die einzige funktionale Prüfung eine Md5sum-Überprüfung der Dateiinhalte mit dem gespeicherten Wert in der Datei-Datenbank. Er wird nur geprüft, falls die Datenbank die Md5sum der Datei enthält. Um auf fehlende Metadaten in der Datenbank zu prüfen, kann der Befehl --audit verwandt werden.
Das Ausgabeformat kann mit der Option --verify-format ausgewählt werden. Standardmäßig wird das Format rpm verwandt. Das kann sich in der Zukunft aber ändern und daher sollten Programme, die die Ausgabe dieses Befehls auswerten, explizit das Format angeben, das sie erwarten.
Ein einfacher Befehl, um die Datei available in einem Rutsch zu holen und zu aktualisieren, ist dselect update. Beachten Sie, dass diese Datei nahezu nutzlos ist, falls Sie nicht dselect sondern eine APT-basierte Oberfläche verwenden: APT verfügt über sein eigenes System, die verfügbaren Pakete zu überwachen.
Die Datei available muss für diesen Befehl aktuell sein, damit dies Nutzen hat, andernfalls werden unbekannte Pakete mit einer Warnung ignoriert. Siehe die Befehle --update-avail und --merge-avail für weitere Informationen.
-b, --build Verzeichnis [Archiv|Verzeichnis]
Baut ein deb-Paket. -c, --contents Archiv
Listet den Inhalt eines deb-Paketes auf. -e, --control Archiv [Verzeichnis]
Entnimmt Steuerinformationen aus einem Paket. -x, --extract Archiv Verzeichnis
Entpackt die vom Paket enthaltenen Dateien. -f, --field Archiv [Steuerfeld] …
Zeigt das/die Steuerfeld(er) eines Paketes an. --ctrl-tarfile Archive
Gibt die von einem Debian-Paket enthaltene Steuer-Tar-Datei aus. --fsys-tarfile Archiv
Gibt die von einem Debian-Paket enthaltene Dateisystem-Tar-Datei aus. -I, --info Archiv [Steuerdatei …]
Zeigt Informationen über ein Paket.
-l, --list Paketnamen-Muster …
Listet auf das übergebene Suchmuster passende Pakete auf. -s, --status Paketname …
Meldet den Status des angegebenen Pakets. -L, --listfiles Paketname …
Listet die aus Paketname auf Ihrem System installierten Dateien auf. -S, --search Dateinamen-Suchmuster …
Sucht nach einem Dateinamen in installierten Paketen. -p, --print-avail Paketname
Zeigt Details über Paketname, wie in /var/lib/dpkg/available
gefunden. Benutzer von APT-basierten Oberflächen sollten stattdessen
apt-cache show Paketname verwenden.
Alle Optionen können auf der Befehlszeile, in der
dpkg-Konfigurationsdatei /etc/dpkg/dpkg.cfg oder
Fragmentdateien (mit Namen, die auf das Shell-Muster
‚[0-9a-zA-Z_-]*’ passen) in den Dateien im
Konfigurationsverzeichnis /etc/dpkg/dpkg.cfg.d/ angegeben werden.
Jede Zeile in der Konfigurationsdatei ist entweder eine Option (exakt die
gleiche wie die Befehlszeilenoption, nur ohne führende Bindestriche)
oder ein Kommentar (falls sie mit ‚#’ beginnt).
Nummer Beschreibung
1 Allgemein hilfreiche Fortschrittsinformationen
2 Aufruf und Status der Betreuerskripte
10 Ausgabe für jede verarbeitete Datei
100 Umfangreiche Ausgabe für jede verarbeitete Datei
20 Ausgabe für jede Konfigurationsdatei
200 Umfangreiche Ausgabe für jede Konfigurationsdatei
40 Abhängigkeiten und Konflikte
400 Umfangreiche Abhängigkeiten/Konflikte-Ausgabe
10000 Trigger-Aktivierung und -Verarbeitung
20000 Umfangreiche Ausgabe bezüglich Trigger
40000 Alberne Menge an Ausgabe bezüglich Trigger
1000 Umfangreiches Gelaber beispielsweise über das
dpkg/info-Verzeichnis
2000 Verrückte Mengen an Gelaber
Warnung: Diese Optionen sind hauptsächlich für den Einsatz durch Experten gedacht. Der Einsatz ohne komplettes Verständnis der Effekte kann Ihr gesamtes System zerstören.
all: Schaltet alle „force“-Optionen ein (oder aus).
downgrade(*): Installiert ein Paket, selbst wenn eine neuere Version davon bereits installiert ist.
Warnung: Derzeit führt dpkg keine Abhängigkeitsüberprüfung bei der Installation älterer Versionen (als bereits installiert) durch (sog. Downgrade) und wird Sie daher nicht warnen, falls dadurch die Abhängigkeit eines anderen Pakets nicht mehr erfüllt ist. Dies kann ernsthafte Seiteneffekte haben, ein Downgrade einer essenziellen Systemkomponente kann Ihr gesamtes System unbrauchbar machen. Verwenden Sie diese Option mit Vorsicht.
configure-any: Konfiguriert auch jedes entpackte, aber unkonfigurierte Paket, von dem das aktuelle Paket abhängt.
hold: Pakete selbst dann verarbeiten, wenn diese mit „hold“ markiert sind.
remove-reinstreq: Entfernt ein Paket, selbst falls es defekt ist und zur Neuinstallation markiert ist. Dies kann beispielsweise dazu führen, dass Teile des Pakets auf dem System bleiben und von dpkg vergessen werden.
remove-essential: Entfernt, selbst falls das Paket als essenziell betrachtet wird. Essenzielle Pakete enthalten hauptsächlich sehr grundlegende Unix-Befehle. Diese zu entfernen kann dazu führen, dass das gesamte System nicht mehr arbeitet - verwenden Sie diese Option daher mit Vorsicht.
depends: Verwandelt alle Abhängigkeitsprobleme in Warnungen. Dies betrifft die Felder Pre-Depends und Depends.
depends-version: Ignoriert Versionen bei der Prüfung von Abhängigkeiten. Dies betrifft die Felder Pre-Depends und Depends.
breaks: Installiert, selbst falls dies ein anderes Paket beschädigt (seit Dpkg 1.14.6). Dies betrifft das Feld Breaks.
conflicts: Installiert, selbst wenn es mit einem anderen Paket in Konflikt steht. Dies ist gefährlich, da dies gewöhnlich dazu führt, dass einige Dateien überschrieben werden. Dies betrifft das Feld Conflicts.
confmiss: Installiert die fehlende Conffile immer ohne Rückfrage. Dies ist gefährlich, da es bedeutet, dass eine Änderung (die Entfernung) an der Datei nicht erhalten wird.
confnew: Falls eine Conffile modifiziert wurde und sich die Version im Paket geändert hat, wird immer die neue Version ohne Rückfrage installiert, es sei denn, --force-confdef ist ebenfalls angegeben, in welchem Falle die Standardaktion bevorzugt wird.
confold: Falls eine Conffile modifiziert wurde und sich die Version im Paket geändert hat, wird immer die alte Version ohne Rückfrage behalten, es sei denn, --force-confdef ist ebenfalls angegeben, in welchem Falle die Standardaktion bevorzugt wird.
confdef: Falls eine Conffile verändert wurde und sich die Version im Paket geändert hat, wird immer die Standardaktion ohne Rückfrage gewählt. Falls es keine Standardaktion gibt, wird angehalten, um den Benutzer zu fragen, es sei denn, --force-confnew oder --force-confold sind ebenfalls angegeben, in welchem Falle dies verwendet wird, um die letztendliche Aktion zu bestimmen.
confask: Falls eine Conffile verändert wurde, wird immer angeboten, sie durch die Version aus dem Paket zu ersetzen, selbst falls sich die Version in dem Paket nicht geändert hat (seit Dpkg 1.15.8). Falls auch einer von --force-confnew, --force-confold oder --force-confdef angegeben wird, wird sie dazu verwandt, die letztendliche Aktion zu ermitteln.
overwrite: Überschreibt die Datei aus einem Paket mit einer Datei aus einem anderen Paket.
overwrite-dir: Überschreibt das Verzeichnis aus einem Paket mit einer Datei aus einem anderen Paket.
overwrite-diverted: Überschreibt eine umgeleitete („diverted“) Datei mit einer nicht umgeleiteten.
statoverride-add: Überschreibt eine existierende Status-Hinwegsetzung beim Hinzufügen (seit Dpkg 1.19.5).
statoverride-remove: Ignoriert eine fehlende Status-Hinwegsetzung beim Entfernen (seit Dpkg 1.19.5).
security-mac(*): Verwendet plattformspezifische „Mandatory Access Control (MAC)“-basierende Sicherheit bei der Installation von Dateien in das Dateisystem (seit Dpkg 1.19.5). Auf Linux-Systemen verwendet die Implementierung SELinux.
unsafe-io: Führt beim Entpacken keine sicheren E/A-Aktionen durch (seit Dpkg 1.15.8.6). Derzeit impliziert dies, dass vor Dateiumbenennungen kein Systemsync durchgeführt wird. Dieser Sync führt bei einigen Dateisystemen zu erheblichen Leistungseinbußen, unglücklicherweise bei solchen, die überhaupt sichere E/A aufgrund ihres unzuverlässigen Verhaltens benötigen, auf denen bei abrupten Systemabstürzen Dateien der Länge Null entstehen können.
Hinweis: Für den Hauptmissetäter Ext4 sollten Sie stattdessen die Einhängeoption nodelalloc verwenden, die sowohl die Leistungseinbuße verhindert als auch Datensicherheitsprobleme vermeidet. Letzteres bedeutet, dass bei abrupten Systemabstürzen bei jeder Software, die keine Syncs vor atomaren Umbenennungen durchführt, keine Dateien der Länge Null generiert werden.
Warnung: Die Verwendung dieser Option kann die Leistung erhöhen, allerdings können dabei Daten verloren gehen. Verwenden Sie die Option vorsichtig.
script-chrootless: Führt Skripte aus, ohne per chroot(2) in das instdir zu wechseln, selbst falls das Paket diese Vorgehensweise nicht unterstützt (seit Dpkg 1.18.5).
Warnung: Dies kann Ihr Wirtsystem beschädigen, passen Sie sehr gut auf!
architecture: Verarbeitet sogar Pakete mit der falschen oder keiner Architektur.
bad-version: Verarbeitet sogar Pakete mit falschen Versionen (seit Dpkg 1.16.1).
bad-path: Im PATH fehlen wichtige Programme, daher sind Probleme wahrscheinlich.
not-root: Versucht Sachen zu (de)installieren, selbst falls nicht root.
bad-verify: Installiert ein Paket, selbst wenn die Authentizitätsprüfung fehlschlägt.
Stellen Sie sicher, dass --no-act vor dem Aktions-Parameter steht, andernfalls könnte dies zu unerwünschten Ergebnissen führen. (Beispielsweise wird dpkg --purge foo --no-act zuerst das Paket foo bereinigen und dann versuchen, das Paket --no-act zu bereinigen, obwohl Sie wahrscheinlich davon ausgingen, dass tatsächlich gar nichts passieren sollte)
Warnung: Beachten Sie, dass abhängig von den ausgeschlossenen Pfaden Sie Ihr System komplett beschädigen könnten. Verwenden Sie dies daher vorsichtig.
Das Glob-Muster kann die gleichen Platzhalter wie in der Shell verwenden, wobei ‚*’ auf eine beliebige Folge von Zeichen, auch dem Leerzeichen und ‚/’, passt. Beispielsweise passt „/usr/*/READ*“ auf „/usr/share/doc/package/README“. Wie gewöhnlich passt ‚?’ auf ein einzelnes Zeichen (wieder auch auf ‚/’). Und ‚[’ beginnt eine Zeichenklasse, die eine Liste von Zeichen, Bereiche und Komplemente enthalten kann. Lesen Sie glob(7) für detaillierte Informationen über das Globben. Hinweis: Aktuelle Implementierungen könnten mehr Verzeichnisse und symbolische Links als benötigt wieder einschließen. Um auf der sicheren Seite zu sein und in der Zukunft mögliche Entpackfehler zu vermeiden, könnte dies durch zukünftige Arbeiten behoben werden.
Dies kann dazu verwandt werden, alle Pfade außer bestimmten zu entferen, ein typischer Fall lautet:
--path-exclude=/usr/share/doc/* --path-include=/usr/share/doc/*/copyright
Hiermit werden alle Dokumentationsdateien (außer den Copyright-Dateien) entfernt.
Diese zwei Optionen können mehrfach angegeben und miteinander verschachtelt werden. Beide werden in der angegebenen Reihenfolge ausgewertet, wobei die letzte Regel, die auf eine Datei passt, die Entscheidung fällt.
Die Filter werden beim Entpacken des Binärpakets angewandt und haben daher nur Wissen über den Typ des derzeit gefilterten Objekts (d.h. eine normale Datei oder ein Verzeichnis) und sehen daher nicht, welche Objekte als nächstes kommen. Da diese Filter Seiteneffekte haben (im Gegensatz zu find(1)-Filtern) wird das Ausschließen eines genauen Pfadnamens, der ein Verzeichnisobjekt wie /usr/share/doc ist, nicht den gewünschten Effekt haben und nur der Pfadname wird ausgeschlossen (der automatisch wieder eingeschlossen werden könnte, falls der Code eine Notwendigkeit hierfür sieht). Alle folgenden Dateien innerhalb des Verzeichnisses werden beim Entpacken fehlschlagen.
Tipp: Stellen Sie sicher, dass die Metazeichen nicht durch Ihre Shell expandiert werden.
Derzeit wird nur das Ausgabeformat rpm unterstützt. Es besteht aus einer Zeile für jeden Pfad, der bei der Prüfung fehlschlug. Die Zeilen starten mit 9 Zeichen, um die Ergebnisse jeder angegebenen Prüfung zu melden. Ein ‚?’ impliziert, dass die Prüfung nicht durchgeführt werden konnte (keine Unterstützung dafür, Dateirechte usw.). ‚.’ impliziert, dass die Prüfung erfolgreich durchgeführt wurde und ein alphanumerisches Zeichen impliziert, dass eine angegebene Prüfung fehlschlug. Der Md5sum-Überprüfungsfehlschlag (die Dateiinhalte haben sich geändert) wird durch ein ‚5’ als drittes Zeichen angezeigt. Der Zeile folgt ein Leerzeichen und ein Attributszeichen (derzeit ‚c’ für Conffiles), ein weiteres Leerzeichen und der Pfadnmae.
Die anderen, nachfolgend aufgeführten Dateien sind in ihren Standardverzeichnissen, lesen Sie den Text zur Option --admindir, um zu sehen, wie Sie den Ort dieser Dateien ändern können.
Die Statusdatei wird täglich nach /var/backups gesichert. Dies kann hilfreich sein, falls sie aufgrund von Problemen mit dem Dateisystem verloren gegangen oder beschädigt worden ist.
Das Format und die Inhalte eines Binärpakets sind in deb(5) beschrieben.
--no-act gibt gewöhnlich weniger Informationen, als hilfreich sein könnten.
Um die installierten Pakete mit Bezug zum Editor vi(1)
aufzulisten (beachten Sie, dass dpkg-query nicht mehr
standardmäßig die Datei available lädt und
stattdessen dafür die Option dpkg-query --load-avail
verwandt werden sollte):
dpkg -l '*vi*'
Um die Einträge von zwei Paketen in
/var/lib/dpkg/available zu sehen:
dpkg --print-avail elvis vim | less
Wenn Sie die Liste der Pakete selbst durchsuchen wollen:
less /var/lib/dpkg/available
Um ein installiertes Elvis-Paket zu entfernen:
dpkg -r elvis
Um ein Paket zu installieren, müssen Sie es erst in einem
Archiv oder auf einer CD-ROM finden. Die Datei available zeigt, dass
das vim-Paket in der Sektion editors ist:
cd /media/cdrom/pool/main/v/vim
dpkg -i vim_4.5-3.deb
Um eine lokale Kopie der Paketauswahl-Zustände zu
erstellen:
dpkg --get-selections >meine_auswahl
Sie könnten diese Datei auf einen anderen Rechner
übertragen und dann die Datei available dort mit dem
Paketverwalter Ihrer Wahl (siehe https://wiki.debian.org/Teams/Dpkg/FAQ
für weitere Details) aktualisieren, zum Beispiel:
apt-cache dumpavail | dpkg --merge-avail
Oder mit Dpkg 1.17.6 oder älter:
avail=`mktemp`
apt-cache dumpavail >"$avail"
dpkg --merge-avail "$avail"
rm "$avail"
Sie können sie dann wie folgt installieren:
dpkg --clear-selections
dpkg --set-selections <meine_auswahl
Beachten Sie, dass dies nichts wirklich installiert oder entfernt, sondern lediglich den Auswahlzustand der angeforderten Pakete setzt. Sie werden eine andere Anwendung benötigen, um die angeforderten Pakete tatsächlich herunterzuladen und zu installieren. Führen Sie beispielsweise apt-get dselect-upgrade aus.
Gewöhnlich werden Sie feststellen, dass dselect(1) eine bequemere Art ist, den Paketauswahlzustand zu ändern.
Zusätzliche Funktionalität kann durch die Installation jedes der folgenden Pakete erhalten werden: apt, aptitude und debsums.
aptitude(1), apt(1), dselect(1), dpkg-deb(1), dpkg-query(1), deb(5), deb-control(5), dpkg.cfg(5) und dpkg-reconfigure(8).
Lesen Sie /usr/share/doc/dpkg/THANKS für die Liste der Leute, die zu dpkg beigetragen haben.
Die deutsche Übersetzung wurde 2004, 2006-2020 von Helge Kreutzmann <debian@helgefjell.de>, 2007 von Florian Rehnisch <eixman@gmx.de>, 2008 von Sven Joachim <svenjoac@gmx.de> und 2019,2020 von Mario Blättermann <mario.blaettermann@gmail.com> angefertigt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 2 oder neuer für die Kopierbedingungen. Es gibt KEINE HAFTUNG.
2022-05-24 | 1.19.8 |