Réponses:
Dans /var/lib/dpkg/infosont des .listfichiers texte qui liste tous les fichiers contenus dans chaque package¹ installé par le gestionnaire de paquets de Debian.
Trouver tous les fichiers dans le système de fichiers ne correspondant à aucune entrée peut être réalisé avec quelque chose de naïf comme ceci:
find / -xdev -type f \( -exec grep -xq "{}" /var/lib/dpkg/info/*.list \; -or -print \)
Cela prendra évidemment beaucoup de temps car tout le système de fichiers sera analysé. Si vous utilisez différentes partitions pour les répertoires système (tels que /usrou /var), spécifiez-les après l'initiale /.
Avertissement: cela n'inclut pas les fichiers créés par les scripts de package. Par exemple:
/etc/hosts.allown'est répertorié nulle part mais il peut provenir de libwrap0celui qui l'a éventuellement créé, si ce fichier n'existait pas au moment de l'installation du package..pycfichiers (bibliothèques Python compilées), des .elcfichiers (librarires Emacs Lisp compilés), etc./var/lib/dpkg/info/*.list- la requête ci-dessus devrait être réécrite selon un autre principe.
Une version plus efficace de la solution de @ Patrice , utilisant un shell prenant en charge la substitution de processus ( bash, AT&T ksh, zsh):
(
export LC_ALL=C
comm -23 <(find / -xdev -type f | sort) \
<(sort -u /var/lib/dpkg/info/*.list)
)
Comme la solution de Patrice, elle suppose qu'aucun chemin de fichier ne contient de caractères de nouvelle ligne.
locatebase de données serait-elle plus rapide que l'exécution find? locate \* | grep -v "^/home/"- a également l'avantage de rechercher dans /boot/et d'autres partitions du système.
Vous pouvez également utiliser la substitution de processus & grep& find. Notez que le grepest utilisé deux fois pour filtrer uniquement les chemins pertinents de /var/lib/dpkg/infopour enregistrer quelques secondes si vous recherchez des fichiers dans un certain répertoire.
dir="/lib/x86_64-linux-gnu"
find "$dir" -type f \
| grep -v -x -F -f \
<(find '/var/lib/dpkg/info' -name '*.list' -print0 \
| xargs -0 grep -h -F "^$dir" \
| sort -u)
find: argument list too long