|
|
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 2: |
Zeile 2: |
|
| |
|
| == Beschreibung == | | == 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 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 |
Zeile 15: |
Zeile 16: |
| * 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 ([https://wiki.debian.org/dpkg https://wiki.debian.org/dpkg]) ist die Basis der Debian Paketverwaltung. dpkg steht für "Debian GNU/Linux package manager" | | ; dpkg ([https://wiki.debian.org/dpkg https://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 | | * 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 | | ; 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 | | * 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 | | * Das Paketformat RPM, das u.a |
Zeile 27: |
Zeile 28: |
|
| |
|
| == Installation == | | == Installation == |
| <syntaxhighlight lang="bash" highlight="1" line> | | <syntaxhighlight lang="bash" highlight="1" line copy> |
|
| |
|
| </syntaxhighlight> | | </syntaxhighlight> |
| == Aufruf == | | == Aufruf == |
| <syntaxhighlight lang="bash" highlight="1-5" line> | | <syntaxhighlight lang="bash" highlight="1-5" line copy> |
| sudo dpkg -i installationspaket.deb | | sudo dpkg -i installationspaket.deb |
| sudo dpkg -S dateiname | | sudo dpkg -S dateiname |
Zeile 40: |
Zeile 41: |
|
| |
|
| === Optionen === | | === Optionen === |
| {| class="wikitable sortable options gnu" | | {| class="wikitable sortable options gnu big" |
| |- | | |- |
| ! Unix !! GNU !! Parameter || Beschreibung | | ! Unix !! GNU !! Parameter || Beschreibung |
| |- | | |- |
| | || [[# --help|--help]] || || Hilfe anzeigen | | | || [[#--help|--help]] || || Hilfe anzeigen |
| |- | | |- |
| | -c || [[# --contents|--contents]] || || Paketinhalt anzeigen | | | -c || [[#--contents|--contents]] || || Paketinhalt anzeigen |
| |- | | |- |
| | -i || [[#--install|]] || || | | | -i || [[#--install|--install]] || || |
| |- | | |- |
| | || [[#--pending|]], [[#--configure|]] || || | | | || [[#--pending|--pending]], [[#--configure|]] || || |
| |- | | |- |
| | -r || [[#--remove|]] || || | | | -r || [[#--remove|--remove]] || || |
| |- | | |- |
| | -P || [[#--purge|]] || || | | | -P || [[#--purge|--purge]] || || |
| |- | | |- |
| | -l || [[#--list|]] || || | | | -l || [[#--list|--list]] || || |
| |- | | |- |
| | -s || [[#--status|]] || || | | | -s || [[#--status|--status]] || || |
| |- | | |- |
| | -S || [[#--search|]] || || | | | -S || [[#--search|--search]] || || |
| |- | | |- |
| | -C || [[#--audit|]] || || | | | -C || [[#--audit|--audit]] || || |
| |- | | |- |
| | -L || [[#--listfiles|]] || || | | | -L || [[#--listfiles|--listfiles]] || || |
| |- | | |- |
| | || [[#--get-selections|]] || || | | | || [[#--get-selections|--get-selections|]] || || |
| |- | | |- |
| | || [[#--set-selections|]] || || | | | || [[#--set-selections|--set-selections]] || || |
| |- | | |- |
| | || [[#--update-avail|]] || || | | | || [[#--update-avail|--update-avail]] || || |
| |- | | |- |
| | || [[#--force-confnew|]] || || | | | || [[#--force-confnew|--force-confnew]] || || |
| |- | | |- |
| | || [[#--force-depends|]] || || | | | || [[#--force-depends|--force-depends]] || || |
| |- | | |- |
| |} | | |} |
Zeile 83: |
Zeile 84: |
|
| |
|
| == Anwendung == | | == Anwendung == |
| === --help ===
| | * [[Dpkg/Anwendung]] |
| 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:
| |
| 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
| |
| </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
| |
| | |
| === --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
| |
| | |
| <syntaxhighlight lang="bash" highlight="1" line>
| |
| $ 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)
| |
| </syntaxhighlight>
| |
| | |
| 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
| |
| | |
| <syntaxhighlight lang="bash" line>
| |
| # 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
| |
| </syntaxhighlight>
| |
| | |
| Für den fortgeschrittenen Systemadministrator ist an dieser Stelle interessant, dass hier auch die MD5-Checksummen der Konfigurationsdateien ausgegeben werden
| |
| | |
| === -S, --search ===
| |
| <syntaxhighlight lang="bash" highlight="1" line>
| |
| sudo dpkg -S Muster
| |
| </syntaxhighlight>
| |
| | |
| 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
| |
| | |
| ; Siehe auch
| |
| [[Paket zu Datei finden]]
| |
| | |
| === -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/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
| |
| </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 == | | == Konfiguration == |
Zeile 342: |
Zeile 95: |
|
| |
|
| === dpkg-Kommandos === | | === dpkg-Kommandos === |
| {| class="wikitable sortable options" | | {| class="wikitable sortable options big" |
| |- | | |- |
| ! Befehl !! Beschreibung | | ! Befehl !! Beschreibung |