Woher weiß dpkg, dass eine Konfigurationsdatei gelöscht wurde?

551
Sod Almighty

Ich hatte vor kurzem ein seltsames Problem, bei dem ich install zsh( apt-get install zsh) installieren würde, aber es würde keine Konfigurationsdateien installieren - insbesondere für /etc/zsh/zshenvFreunde.

Nach einiger Zeit und Mühe gelang es mir, diesen Protokolleintrag aufzuspüren:

deferred_configure '/ etc / zsh / zshenv' (= '/ etc / zsh / zshenv') useredited = 1 distedited = 0 what = 202

Und diese Erklärung:

Das Entfernen der Datei zählt als "Bearbeiten", da für viele Konfigurationsdateien das Fehlen einer Datei sinnvoll ist.

Nun, ich hatte das /etc/zshVerzeichnis zufällig gelöscht, also wäre das alles sinnvoll - abgesehen davon, dass ich es auch getan hatte apt-get remove zsh!!

Angesichts der Tatsache, dass ich zsh deinstalliert habe, wenn es zu einer Neuinstallation kommt, wie überrascht es dann, dass keine Konfigurationsdateien vorhanden sind? Sie würden nicht auf einem frischen System vorhanden sein - das heißt, eine ohne zsh installiert - so wie funktioniert sie wissen, dass sie waren es früher?

Und wie höre ich damit auf?

Ich weiß, dass ich bestehen kann --force-confmiss, aber darum geht es nicht. In der Tat glaube ich nicht, dass dies apt-getauf jeden Fall gemacht werden kann.

Ich möchte nicht ändern, wie Programme installiert werden. Stattdessen möchte ich wissen, wie dpkg feststellt, dass Dateien, deren Vorhandensein überhaupt nicht zu erwarten war, vom Benutzer gelöscht wurden. Was ist der Unterschied zwischen einer Datei, die gelöscht wurde und einer, die nie existiert hat? Ist es etwas damit zu tun apt-get --purge?

3

2 Antworten auf die Frage

3
Giacomo Catenazzi

Von der dpkg-Manpage:

--remove Paket (...) Entfernen Sie ein installiertes Paket. Dadurch werden alle Elemente außer conffiles entfernt, sodass das Paket möglicherweise nicht neu konfiguriert werden muss, wenn es später erneut installiert wird (conffiles sind Konfigurationsdateien, die in der DEBIAN / conffiles-Steuerdatei aufgeführt sind).

So haben Sie das nicht vollständig entfernt zsh, aber einige Informationen blieben im System. Der Status des Pakets lautet "d" (entfernt) und nicht "p" (gelöscht oder nie gesehen).

Sie müssen das Paket bereinigen, um auch die Conffiles zu entfernen, um die Pakete als neu zu installieren.

Hinweis: Wenn Sie neugierig sind, können Sie überprüfen /var/lib/dpkg/, was das System über Ihre Pakete weiß.

Aha. Danke für die Hilfe. Sod Almighty vor 8 Jahren 0
0
Kevin Benko

You need to remove the extraneous config files.

  1. You should install dctrl-tools or grep-status (not both) you can use that grep-status command in a script to delete the extraneous config files

  2. the following command will be useful, instead:

    aptitude purge ~c 

    It is a tilde, not a dash. I have heard that aptitude purge ?config-files will also work, but I don't know about that.

    You can replace purge with search if you don't feel safe, first.