dpkg ist der [[Debian]] PaketManager. Statt dpkg aufzurufen wird bei manchen Funktionen auch das komfortablere [[apt]] verwendet, das auf dpkg aufbaut. * [[/Interna]] * /SelbstKompilieren * /TaskPakete * /LokaleDebDateien = 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 [[Backquote]]s! * {{{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 <<DateTime(2005-08-30T20:29:25Z)>> * 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. ;-)