Dpkg: Unterschied zwischen den Versionen
(55 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''dpkg''' - Paketverwalter für Debian | '''dpkg''' - Paketverwalter für Debian | ||
== | == Beschreibung == | ||
''dpkg'' (Debian Package) dient zum Installieren einzelner deb-Pakete | ''dpkg'' (Debian Package) dient zum Installieren einzelner deb-Pakete | ||
* Es stellt die Funktionen zur Verfügung (Backend), die von den Programmen apt install benutzt werden | * Es stellt die Funktionen zur Verfügung (Backend), die von den Programmen apt install benutzt werden | ||
* Für die meisten Operationen sind Root-Rechte nötig | * Für die meisten Operationen sind Root-Rechte nötig | ||
''dpkg'' ist ein Werkzeug, um Debian-Pakete zu installieren, zu bauen, zu entfernen und zu verwalten | |||
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]](8) | ||
* Die primäre und benutzerfreundlichere Oberfläche für dpkg ist aptitude(8) | * dpkg selbst wird komplett über Befehlszeilenoptionen gesteuert, die aus genau einer Aktion und Null oder mehreren Optionen bestehen | ||
* 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 | ||
* 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 | ||
* 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 | ||
* 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 | ||
* 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 | ||
* Um solche Optionen zu verwenden, müssen die Backends direkt aufgerufen werden | |||
dpkg ([http://wiki.debian.org/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 | |||
== Installation == | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
< | </syntaxhighlight> | ||
== Aufruf == | |||
<syntaxhighlight lang="bash" highlight="1-5" line> | |||
sudo dpkg -i installationspaket.deb | |||
sudo dpkg -S dateiname | |||
sudo dpkg --search dateiname | |||
sudo dpkg -s installationspaket.deb | |||
sudo dpkg --status installationspaket.deb | |||
</syntaxhighlight> | |||
=== Optionen === | |||
=== Parameter === | |||
=== Umgebungsvariablen === | |||
=== Exit-Status === | |||
== Anwendung == | |||
; Nützliche Beispiele | |||
{| class="wikitable sortable options gnu" | |||
|- | |||
! Unix !! GNU !! Parameter || Beschreibung | |||
|- | |||
| || --help || ||Hilfe anzeigen | |||
|- | |||
| -c || --contents || ||Paketinhalt anzeigen | |||
|- | |||
| -i || --install || || | |||
|- | |||
| || --pending, --configure || || | |||
|- | |||
| -r ||--remove || || | |||
|- | |||
| -P || --purge || || | |||
|- | |||
| -l || --list || || | |||
|- | |||
| -s || --status || || | |||
|- | |||
| -S || --search || || | |||
|- | |||
| -C || --audit || || | |||
|- | |||
| -L ||--listfiles || || | |||
|- | |||
| || --get-selections || || | |||
|- | |||
| || --set-selections || || | |||
|- | |||
| || --update-avail || || | |||
|- | |||
| || --force-confnew || || | |||
|- | |||
| || --force-depends || || | |||
|- | |||
|} | |||
=== --help === | |||
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 | |||
<syntaxhighlight lang="bash" line> | |||
# 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: | 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 | Use `dselect' for user-friendly package management | ||
</syntaxhighlight> | |||
=== -c, --contents === | |||
* | 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 | |||
=== | === -i, --install === | ||
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, --configure === | ||
* Es kann zu einem solchen Zustand kommen, wenn das System bei der Installation von Paketen auf einen Fehler trifft und abbricht | Mit --pending können bereits entpackte, aber noch nicht konfigurierte Pakete endgültig konfiguriert werden | ||
* Zu diesem Zeitpunkt können aber bereits andere (eventuell wichtige) Pakete im aktuellen Installationsdurchlauf entpackt worden sein | * Es kann zu einem solchen Zustand kommen, wenn das System bei der Installation von Paketen auf einen Fehler trifft und abbricht | ||
* Diese können durch Angabe des Paketnamens gezielt konfiguriert und damit abschließend installiert werden | * 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 | Sollen nicht nur bestimmte, sondern alle bereits entpackten Pakete dieser Prozedur unterzogen werden, so müssen Sie die Option -a oder --pending verwenden | ||
=== | === -r, --remove === | ||
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 | |||
=== -P, --purge === | |||
Die Option „purge“ entfernt ein Paket komplett, inklusive aller Konfigurationsdateien, aus dem System | |||
=== | === -l, --list === | ||
Mit der Option -l können die tatsächlichen Paketnamen ermittelt werden | |||
* Diese weichen häufig von den eigentlichen Befehlen ab | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
$ dpkg -l mozilla* | |||
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten | Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Säubern/Halten | ||
| Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. | | Status=Nicht/Installiert/Config/U=Entpackt/Fehlgeschl. Konf./Halb install | ||
|/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht) | |/Fehler?=(keiner)/Halten/R=Neuinst.notw/X=beides (Status,Fehler: GROSS=schlecht) | ||
||/ Name | ||/ Name Version Beschreibung | ||
+++-==============-==============-=========================================== | +++-==============-==============-=========================================== | ||
ii | ii mozilla 1.0.0-1 Mozilla Web Browser - dummy package | ||
ii | ii mozilla-browse 1.0.0-1 Mozilla Web Browser - core and browser | ||
rc | rc mozilla-browse 0.0.20020226.1 An Open Source WWW browser for X and GTK+ (C | ||
ii | ii mozilla-browse 0.0.20020610.0 An Open Source WWW browser for X and GTK+ (C | ||
ii | ii mozilla-chatzi 1.0.0-1 Mozilla Web Browser - irc client | ||
pn | pn mozilla-chatzi <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-chatzi <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-cvs <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-cvs-de <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-dev 1.0.0-1 Mozilla Web Browser - development files | ||
un | un mozilla-dmotif <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-dom-in 1.0.0-1 A tool for inspecting the DOM of pages in Mo | ||
ii | ii mozilla-dom-in 0.0.20020610.0 A tool for inspecting the DOM of pages in Mo | ||
ii | ii mozilla-js-deb 1.0.0-1 JavaScript debugger for use with Mozilla | ||
pn | pn mozilla-js-deb <keine> (keine Beschreibung vorhanden) | ||
rc | rc mozilla-locale 0.9.9-3 Mozilla German Language/Region Package | ||
pn | pn mozilla-locale <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-locale <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-mailne 1.0.0-1 Mozilla Web Browser - mail and news support | ||
pn | pn mozilla-mailne <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-mailne <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-psm 1.0.0-1 Mozilla Web Browser - Personal Security Mana | ||
pn | pn mozilla-psm-cv <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-psm-sn 0.0.20020610.0 PSM - Personal Security Manager for Mozilla | ||
un | un mozilla-smotif <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-snapsh <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-snapsh <keine> (keine Beschreibung vorhanden) | ||
ii | ii mozilla-xmlter 1.0.0-1 Mozilla Web Browser - XML enabled | ||
pn | pn mozilla-xmlter <keine> (keine Beschreibung vorhanden) | ||
pn | pn mozilla-xmlter <keine> (keine Beschreibung vorhanden) | ||
</syntaxhighlight> | |||
Problematisch ist hierbei, dass der Name des Pakets abgeschnitten wird; dies können Sie durch Setzen der Variablen | 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* | ||
=== | === -s, --status === | ||
Hiermit kann der Status eines Pakets ermittelt werden | |||
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 | ||
* Es werden u.a. | * So können sehr schnell die Ursachen für eventuelle Probleme bei der Installation von weiteren Paketen ermittelt werden | ||
* So können sehr schnell die Ursachen für eventuelle Probleme bei der Installation von weiteren Paketen ermittelt werden | |||
<syntaxhighlight lang="bash" line> | |||
# Package: bash | # Package: bash | ||
Essential: yes | Essential: yes | ||
Zeile 167: | Zeile 204: | ||
Conflicts: bash-completion | Conflicts: bash-completion | ||
Conffiles: | Conffiles: | ||
/etc/skel/.bashrc c5f1155761187900cbb3b6554c2b2533 | |||
/etc/skel/.bash_profile ee190fd94cb7bfe8a663447386c065e8 | |||
/etc/bash.bashrc e218a2979b01db4e9c3ae19c94294a57 | |||
/etc/bash_completion 14dde46ca4fb4af4d1f22f0f0fc2ef8c | |||
Description: The GNU Bourne Again Shell | 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 | |||
</syntaxhighlight> | |||
Für den fortgeschrittenen Systemadministrator ist an dieser Stelle interessant, dass hier auch die MD5-Checksummen der Konfigurationsdateien ausgegeben werden | |||
=== | === -S, --search === | ||
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 | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
dpkg -S gdm.conf | |||
gdm: /etc/gdm/factory-gdm.conf | |||
gdm: /etc/gdm/gdm.conf | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" highlight="1" line> | |||
dpkg -S /etc/gdm/gdm.conf | |||
gdm: /etc/gdm/gdm.conf | |||
</syntaxhighlight> | |||
Hierbei kann das Weglassen oder Hinzufügen des Pfades zu der gesuchten Datei zu unterschiedlichen Ergebnissen führen | |||
=== -C, --audit === | |||
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 | |||
=== -L, --listfiles === | |||
/ | Zeigt alle Dateien an, die zum angegebenen Paket gehören | ||
<syntaxhighlight lang="bash" highlight="1" line> | |||
sudo dpkg -L bash | |||
/ | |||
/bin | /bin | ||
/bin/bash | /bin/bash | ||
Zeile 249: | Zeile 265: | ||
/usr/share/doc/bash/completion-contrib/gnatmake | /usr/share/doc/bash/completion-contrib/gnatmake | ||
/usr/share/doc/bash/completion-contrib/bitkeeper | /usr/share/doc/bash/completion-contrib/bitkeeper | ||
/usr/share/man/man7 | /usr/share/man/man7 | ||
/usr/share/man/man7/bash-builtins.7.gz | /usr/share/man/man7/bash-builtins.7.gz | ||
Zeile 259: | Zeile 272: | ||
/bin/sh | /bin/sh | ||
/usr/share/man/man1/sh.1.gz | /usr/share/man/man1/sh.1.gz | ||
</syntaxhighlight> | |||
=== | === --get-selections === | ||
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 | |||
<syntaxhighlight lang="bash" highlight="1-5" line> | |||
sudo dpkg --get-selections \* > /tmp/PAKETLISTE | |||
</syntaxhighlight> | |||
=== --set-selections === | |||
Liest eine zuvor mit --get-selections erzeugte Paketliste wieder ein | |||
; Beispiel | |||
<syntaxhighlight lang="bash" highlight="1-5" line> | |||
sudo dpkg --set-selections < /tmp/PAKETLISTE | |||
</syntaxhighlight> | |||
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 | |||
=== --update-avail === | |||
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|''dselect update'']] | |||
=== --force-confnew === | |||
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: | |||
<syntaxhighlight lang="bash" highlight="1-5" line> | |||
sudo dpkg -i --force-confnew /var/cache/apt/archives/paket.deb | |||
</syntaxhighlight> | |||
=== | === --force-depends === | ||
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 | |||
== Konfiguration == | |||
=== Dateien === | |||
<noinclude> | |||
=== | == Anhang == | ||
=== Siehe auch === | |||
{{Special:PrefixIndex/dpkg}} | |||
==== dpkg-Befehle ==== | |||
{| class="wikitable sortable options" | |||
=== | |||
{ | |||
|- | |- | ||
! Befehl !! Beschreibung | |||
|- | |- | ||
| | | [[dpkg-architecture]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-buildflags]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-buildpackage]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-checkbuilddeps]] || | ||
|- | |- | ||
| | | [[dpkg-checkdeps]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-deb]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-distaddfile]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-divert]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-genbuildinfo]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-genchanges]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-gencontrol]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-gensymbols]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-maintscript-helper]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-mergechangelogs]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-name]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-parsechangelog]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-preconfigure]] || | ||
|- | |- | ||
| | | [[dpkg-query]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-reconfigure]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-ruby]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-scanpackages]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-scansources]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-shlibdeps]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-source]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-split]] || | ||
|- | |- | ||
| | | [[dpkg-statoverride]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-trigger]] || | ||
|| | |||
|- | |- | ||
| | | [[dpkg-vendor]] || | ||
|| | |||
|} | |} | ||
== | ==== Dokumentation ==== | ||
===== Man-Page ===== | |||
===== Info-Pages ===== | |||
==== Links ==== | |||
===== Projekt ===== | |||
===== Weblinks ===== | |||
[[Kategorie:Linux/Befehl]] | [[Kategorie:Linux/Befehl]] | ||
[[Kategorie:dpkg]] | [[Kategorie:dpkg]] | ||
{{DEFAULTSORT:dpkg}} | {{DEFAULTSORT:dpkg}} | ||
{{DISPLAYTITLE:dpkg}} | {{DISPLAYTITLE:dpkg}} | ||
</noinclude> |
Aktuelle Version vom 25. Dezember 2024, 14:59 Uhr
dpkg - Paketverwalter für Debian
Beschreibung
dpkg (Debian Package) dient zum Installieren einzelner deb-Pakete
- Es stellt die Funktionen zur Verfügung (Backend), die von den Programmen apt install benutzt werden
- Für die meisten Operationen sind Root-Rechte nötig
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(8)
- 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 (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
Installation
Aufruf
sudo dpkg -i installationspaket.deb
sudo dpkg -S dateiname
sudo dpkg --search dateiname
sudo dpkg -s installationspaket.deb
sudo dpkg --status installationspaket.deb
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Anwendung
- Nützliche Beispiele
Unix | GNU | Parameter | Beschreibung |
---|---|---|---|
--help | Hilfe anzeigen | ||
-c | --contents | Paketinhalt anzeigen | |
-i | --install | ||
--pending, --configure | |||
-r | --remove | ||
-P | --purge | ||
-l | --list | ||
-s | --status | ||
-S | --search | ||
-C | --audit | ||
-L | --listfiles | ||
--get-selections | |||
--set-selections | |||
--update-avail | |||
--force-confnew | |||
--force-depends |
--help
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
-c, --contents
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
-i, --install
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
--pending, --configure
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
-r, --remove
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
-P, --purge
Die Option „purge“ entfernt ein Paket komplett, inklusive aller Konfigurationsdateien, aus dem System
-l, --list
Mit der Option -l können die tatsächlichen Paketnamen ermittelt werden
- Diese weichen häufig von den eigentlichen Befehlen ab
$ 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*
-s, --status
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 <[mailto:doko@debian.org 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
-S, --search
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
dpkg -S gdm.conf
gdm: /etc/gdm/factory-gdm.conf
gdm: /etc/gdm/gdm.conf
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
-C, --audit
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
-L, --listfiles
Zeigt alle Dateien an, die zum angegebenen Paket gehören
sudo 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
--get-selections
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
sudo dpkg --get-selections \* > /tmp/PAKETLISTE
--set-selections
Liest eine zuvor mit --get-selections erzeugte Paketliste wieder ein
- Beispiel
sudo 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
--update-avail
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
--force-confnew
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:
sudo dpkg -i --force-confnew /var/cache/apt/archives/paket.deb
--force-depends
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
Konfiguration
Dateien
Anhang
Siehe auch
dpkg-Befehle
Dokumentation
Man-Page
Info-Pages
Links
Projekt
Weblinks