Réponses:
Dans /var/lib/dpkg/info
sont des .list
fichiers 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 /usr
ou /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.allow
n'est répertorié nulle part mais il peut provenir de libwrap0
celui qui l'a éventuellement créé, si ce fichier n'existait pas au moment de l'installation du package..pyc
fichiers (bibliothèques Python compilées), des .elc
fichiers (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.
locate
base 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 grep
est utilisé deux fois pour filtrer uniquement les chemins pertinents de /var/lib/dpkg/info
pour 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