Frage Wie finde ich Dateien in einem Debian-System, die nicht von dpkg installiert oder erstellt wurden?


Ich habe einige Dinge manuell in der Vergangenheit installiert und möchte alle zugehörigen Dateien aussortieren. Also brauche ich einen Weg, um automatisch alle Dateien zu finden (zum Beispiel in / usr), die nicht in einem der Pakete enthalten sind, die derzeit auf dem Debian-System installiert sind. Allerdings müsste ich auch die Dateien herausfiltern, die während der Paketinstallation erstellt werden (durch dpkg Post-Installationsskripte und ähnliche Dinge).


19
2018-02-21 14:27


Ursprung


Siehe auch diese Frage: unix.stackexchange.com/questions/18038/... - Taha Jahangir


Antworten:


Benutze die cruft Paket:

cruft ist ein Programm, um das System nach allem zu durchsuchen, was nicht sein sollte   sei da, aber ist; oder für alles, was da sein sollte, aber nicht ist.


24
2018-02-21 18:16





Du könntest 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, die sich in / usr befinden, aber keine Paketdatei. Als erster Schuss könnte dir das helfen.


3
2018-02-21 14:54



Ich kann keine Möglichkeit finden, -L zu erreichen, um mehr als ein Paket gleichzeitig aufzulisten, aber Sie können denselben Effekt erzielen grep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat - DerfK
Es gibt kein --list-all-package-files Möglichkeit. - Karol
@DerfK: Sie können -l aufrufen, um mehr als ein Paket aufzulisten, zum Beispiel so: dpkg -L `aptitude search ~i -F "%p"` - Karol
Das Problem bei diesem Ansatz besteht darin, dass mehr Dateien oder Links in / usr enthalten sind, als von dpkg aufgelistet. Zum Beispiel existiert / usr / bin / aptitude, wahrscheinlich erstellt durch ein Post-Installationsskript, aber es wird nicht von dpkg aufgelistet. Also, ich denke, was ich will, ist eine Liste der installierten Dateien oder erstellt durch die Installation eines Pakets (wird die Frage ändern). - Karol
@Karol: Andere Dateiquellen könnten Umleitungen und Alternativen sein. Die Ausgabe ist in Satzform, aber Sie können Umleitungen mit sehen dpkg-divert --list als root (Diese erhalten normalerweise ein Suffix). Alternativen sind etwas schwieriger, das Dateiformat in / var / lib / dpkg / alternatives / ist umständlich und update-alternatives erzählt mir gerade über alles ABER den Namen des Links. find /usr -lname '/etc/alternatives/*' ist wahrscheinlich der einfachste Weg, um diese zu bekommen. - DerfK