dpkg ist der Debian PaketManager.
Statt dpkg aufzurufen wird bei manchen Funktionen auch das komfortablere apt verwendet, das auf dpkg aufbaut.
Mini-Howto
dpkg -l - auflisten aller installierten Pakete
COLUMNS=200 dpkg -l | less führt zu einer breiteren Darstellung, in der die Paketnamen nicht abgeschnitten sind
dpkg- l | awk '{print $2}' zeigt nur die Paketnamen selbst an. Wenn man den Befehl bspw. durch > installed_packages.txt erweitert, werden die Paketnamen in eine Datei geschrieben. Per apt-get install `cat installed_packages.txt` kann man APT dazu bringen, die im ersten Kommando ermittelten Pakete einzuspielen. Achtung: Die Apostrophe sind Backquotes!
dpkg -l "*" - auflisten aller verfügbaren Pakete (egal ob installiert oder nicht)
dpkg -l [wildcard] - auflisten aller Pakete deren Name passt
dpkg -p - Metadaten zu einem Paket anzeigen
dpkg -i paket.deb - Paket installieren
dpkg --remove paket - Paket deinstallieren ("remove")
dpkg --purge paket - Paket deinstallieren ("Purge") - wie --remove aber mit allen Configs
dpkg -S [wildcard] - auflisten aller installierten, passenden Files und die Pakete zu denen sie gehören, in anderen Worten: ich hab einen Filenamen und will wissen, zu welchem Paket er gehört
dpkg -L paket - auflisten aller Files eines Pakets
dpkg-buildpackage -rfakeroot -us -uc - Im entpackten Verzeichnis: das Paket kompilieren (braucht das fakeroot Paket)
dpkg --pending --configure - konfiguriert alles, was noch ansteht, d.h. ausgepackt, aber noch nicht konfiguriert wurde
Lösung bei Fehlern
Wenn die Informationen zu Paketdaten kaputt sind kann es Probleme geben. Hier einige Befehle, die zur Lösung beitragen
dpkg --clear-avail Löscht die Informationen über verfügbare Pakete. Ist diese Information kaputt kann das zu SpeicherzugriffsFehler (SegmentationFault) beim Ausführen von dpkg führen.
Problem: Zwei installiert Pakete fühlen sich für eine Datei zuständig (wie das kam, keine Ahnung). Es läßt sich keines mehr deinstallieren.
Lösung: dpkg -r --force-depends PAKETNAME
Frage: Wie kann ich mir Anzeigen lassen welche Dateien ein Paket enthält? -- ThomasHochstetter 2005-08-30 20:29:25
- Aus der Manpage:
- dpkg -L | --listfiles package ...
- List files installed to your system from package.
- Sollte das Paket nicht installiert sein, bist du auf apt-file angewiesen.
"Setting up libapache2-mod-php4 (4.3.10-18) ..." bleibt hängen
Als ich am 29.11.06 wie üblich apt-get update / apt-get upgrade gemacht habe, kam folgende Fehlermeldung:
{{{ Setting up libapache2-mod-php4 (4.3.10-18) ... dpkg: error processing libapache2-mod-php4 (--configure):
- subprocess post-installation script killed by signal (Interrupt)
Setting up php4-mcal (4.3.10-18) ...
dpkg: dependency problems prevent configuration of php4:
php4 depends on libapache-mod-php4 (>= 4:4.3.10-18) | libapache2-mod-php4 (>= 4:4.3.10-18); however:
- Package libapache-mod-php4 is not installed. Package libapache2-mod-php4 is not configured yet.
dpkg: error processing php4 (--configure):
- dependency problems - leaving unconfigured
Setting up php4-pear (4.3.10-18) ...
Errors were encountered while processing:
- libapache2-mod-php4 php4
}}}
Wenn ich mich richtig erinnere, war schon damals "Setting up libapache2-mod-php4 (4.3.10-18) ..." hängen geblieben und ich hatte das nach einiger Zeit abgebrochen. Ich hatte das ganze dann etwas aus dem Auge verloren. Jetzt habe ich nochmal `apt-get update laufen lassen und es kam die Meldung
E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem.
Wenn ich dann dpkg --configure -a` laufen lasse, bleibt das wieder genau an der gleichen Stelle hängen, also bei "Setting up libapache2-mod-php4 (4.3.10-18) ...".
Geholfen hat schließlich apt-get remove --purge libapache2-mod-php4. Was die eigentlich Ursache war, weiß ich aber nicht. Und wozu ich dieses komische Paket gebraucht hatte auch nicht. Jedenfalls läuft es jetzt auch ohne.