Wie kann ich eine Liste von Dateien auf meinem Computer abrufen, die keinem Paket „gehören“?

9

Ich denke darüber nach, ein Skript zu schreiben, das dies tut:

  • Durchläuft jede Datei in / usr / lib
  • Führt eine dpkg -sSuche in jeder Datei durch.
  • Meldet eine Liste von "verwaisten" Dateien, die zu keinem .deb-Paket gehören.

Die Idee ist, dass ich im Laufe der Zeit viel make installSoftware installiert habe und eine Liste der verbleibenden Dateien von manuell installierter Software erhalten möchte, die ich seitdem gelöscht habe.

Ken Kinder
quelle
Stellen Sie in Zukunft sicher, dass alles, was Sie außerhalb des Verpackungssystems installieren, unter / usr / local oder / opt installiert wird. Dann haben Sie eine klare Trennung.
Geirha

Antworten:

8
find /usr/lib -type f -exec dpkg -S {} + 2>&1 >/dev/null | sed -r 's/^[^/]+//'

Ich warne dich jetzt: Es ist langsam.

Oli
quelle
3
Es ist schneller:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη
1
Keine Meinungsverschiedenheit da. 2012 war Oli nicht so gut wie 2015. Ich habe es aktualisiert, sodass nur eine Liste der Dateien zurückgegeben wird.
Oli
3

Sie können den folgenden Befehl ausführen

join -t '' -v1 <(find /usr/lib | sort) \
               <(grep -h /usr/lib /var/lib/dpkg/info/*.list | sort -u)

die die Liste der Dateien in /usr/libmit der Liste der Dateien vergleichen, die in mindestens einer Datei in /var/lib/dpkg/info/<NAME>.list(den von dpkg -S) verwendeten Dateien vorhanden sind . Die -v1Option meldet Dateien, die in der ersten Liste vorhanden sind, jedoch nicht in der zweiten.

Auf meinem Computer gibt diese Differenzliste mehr als 5000 Treffer, daher bezweifle ich, dass sie hilfreich sein könnte.

Enzotib
quelle
Funktioniert sehr schnell für mich.
user1202136
2
sudo aptitude install cruft
man cruft
sudo addgroup cruft
sudo chmod g+rwx /var/spool/cruft
sudo chown root:cruft /var/spool/cruft
sudo addgroup $USER cruft
cruft -r cruftreport
sudo chown root:root /var/spool/cruft
less cruftreport
user2697383
quelle
1
Ich mag das man cruftda drin, aber ein bisschen mehr Erklärung zu Cruft und warum du es empfehlen würdest wäre schön! : P ;-)
Fabby
Dies wird nicht funktionieren, genauer gesagt: (1) "chown: fehlender Operand nach 'root: cruft'" ". Müssen schreiben: "sudo chown root: cruft / var / spool / cruft" statt (2) "sudo addgroup $ USER cruft" erfordert das Schließen / Öffnen einer neuen Shell (Relogin). (3) Wenn Sie cruft anrufen, benötigen Sie "sudo cruft", wenn Sie alle Verzeichnisse überprüfen möchten.
Muenalan