web-dev-qa-db-fra.com

Comment puis-je obtenir une liste de fichiers sur mon ordinateur qui ne sont "détenus" par aucun paquet?

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

  • Parcourt chaque fichier dans/usr/lib
  • Effectue une recherche dpkg -s sur chaque fichier.
  • Rapporte une liste de fichiers "orphelins" n'appartenant à aucun paquet .deb.

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

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

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

8
Oli

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)

comparant la liste des fichiers de /usr/lib à la liste des fichiers présents dans au moins un fichier de /var/lib/dpkg/info/<NAME>.list (les fichiers utilisés par dpkg -S). L'option -v1 rend compte des fichiers présents dans la première liste mais pas dans la seconde.

Sur ma machine, cette liste de différences donne plus de 5 000 occurrences. Je doute donc que cela puisse être utile.

3
enzotib
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
2
user2697383