Wie finde ich Dateien in einem Debian-System, das nicht von dpkg installiert oder erstellt wurde?

20

Ich habe in der Vergangenheit einige Dinge manuell installiert und möchte alle zugehörigen Dateien aussortieren. Ich brauche also eine Möglichkeit, alle Dateien (zum Beispiel in / usr), die in keinem der derzeit auf dem Debian-System installierten Pakete enthalten sind, automatisch zu finden. Ich müsste jedoch auch die Dateien herausfiltern, die während der Paketinstallation erstellt werden (durch dpkg-Post-Install-Skripte und ähnliche Dinge).

Karol
quelle
1
Siehe auch diese Frage: unix.stackexchange.com/questions/18038/…
Taha Jahangir

Antworten:

25

Verwenden Sie das cruftPaket:

cruft ist ein Programm, mit dem das System nach allem durchsucht werden kann, was nicht vorhanden sein sollte, aber vorhanden ist. oder für alles, was da sein sollte, aber nicht ist.

Teddy
quelle
4

Sie könnten so etwas versuchen:

dpkg -L --list-all-package-files | grep "^/usr" > dpkg-files.dat   **(don't know the dpkg option "--list-all-package-files", read mand dpkg)**
find /usr -type f -o -type l > all-usr-files.dat
sort dpkg-files.dat all-usr-files.dat | uniq -c | grep " 1 "

Auf diese Weise erhalten Sie alle Dateien in / usr, jedoch keine Paketdatei. Als erstes könnte dir das helfen.

rems
quelle
Ich kann -L nicht dazu bringen, mehr als ein Paket gleichzeitig grep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
aufzulisten
Es gibt keine --list-all-package-filesOption.
Karol
@DerfK: Sie können -l dazu bringen, mehr als ein Paket aufzulisten, zum Beispiel so:dpkg -L `aptitude search ~i -F "%p"`
Karol
Das Problem bei diesem Ansatz ist, dass sich in / usr mehr Dateien oder Links befinden, als tatsächlich von dpkg aufgelistet werden. Zum Beispiel existiert / usr / bin / aptitude, wahrscheinlich von einem Skript nach der Installation erstellt, aber es wird nicht von dpkg aufgelistet. Ich schätze, ich möchte hier eine Liste der Dateien, die durch die Installation eines Pakets installiert oder erstellt wurden (wird die Frage ändern).
Karol
@Karol: Andere Quellen für Dateien können Umleitungen und Alternativen sein. Die Ausgabe erfolgt in Satzform, aber Sie können Umleitungen mit dpkg-divert --listals root sehen (Diese werden normalerweise mit einem Suffix versehen). Alternativen sind etwas schwieriger, das Dateiformat in / var / lib / dpkg / alternatives / ist umständlich und update-alternativessagt mir fast alles, ABER den Namen des Links. find /usr -lname '/etc/alternatives/*'ist wahrscheinlich der einfachste Weg, um diese zu bekommen.
DerfK