Comment puis-je obtenir une liste de fichiers sur mon ordinateur qui n'appartiennent à aucun package?

9

J'envisage d'écrire un script qui fait ceci:

  • Parcourt chaque fichier dans / usr / lib
  • Effectue une dpkg -srecherche sur chaque fichier.
  • Signale une liste de fichiers "orphelins" n'appartenant à aucun package .deb.

L'idée est qu'au fil du temps, j'ai installé beaucoup de make installlogiciels et j'aimerais obtenir une liste des fichiers restants des logiciels installés manuellement que j'ai supprimés depuis.

Ken Kinder
la source
À l'avenir, assurez-vous que tout ce que vous installez en dehors du système d'emballage est installé dans / usr / local ou / opt. Ensuite, vous aurez une séparation claire.
geirha

Réponses:

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

Je vous préviens maintenant: c'est lent.

Oli
la source
3
C'est plus rapide:find /usr/lib -type f -exec dpkg -S {} + | grep 'no path found'
αғsнιη
1
Aucun désaccord là-bas. Oli en 2012 n'était pas aussi bon qu'en 2015. Je l'ai mis à jour pour qu'il ne renvoie qu'une liste de fichiers.
Oli
3

Vous pouvez exécuter la commande suivante

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

qui comparent la liste des fichiers dans /usr/libavec la liste des fichiers présents dans au moins un fichier dans /var/lib/dpkg/info/<NAME>.list(les fichiers utilisés par dpkg -S). L' -v1option rapporterait les fichiers présents dans la première liste mais pas dans la seconde.

Sur ma machine, cette liste de différences donne plus de 5000 hits, donc je doute qu'elle puisse être utile.

enzotib
la source
Fonctionne très vite pour moi.
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
la source
1
J'aime le man cruftdedans, mais un tout petit peu plus d'explications sur la cruauté et pourquoi vous le recommanderiez, ce serait bien! : P ;-)
Fabby
Cela ne fonctionnera pas, plus précisément: (1) "chown: opérande manquant après 'root: cruft'". Besoin d'écrire: "sudo chown root: cruft / var / spool / cruft" à la place (2) "sudo addgroup $ USER cruft" nécessitera la fermeture / l'ouverture d'un nouveau shell (relogin). (3) L'appel de cruft nécessitera "sudo cruft" si vous souhaitez inspecter tous les répertoires.
muenalan