Dans mon système, j'ai des fichiers qui n'appartiennent à aucun paquet, ils sont à moi ou à partir de programmes compilés installés avec make install
. Comment puis-je trouver tous les fichiers qui n'appartiennent à aucun package?
la source
Dans mon système, j'ai des fichiers qui n'appartiennent à aucun paquet, ils sont à moi ou à partir de programmes compilés installés avec make install
. Comment puis-je trouver tous les fichiers qui n'appartiennent à aucun package?
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.
find: argument list too long
/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&Tksh
,zsh
):Comme la solution de Patrice, elle suppose qu'aucun chemin de fichier ne contient de caractères de nouvelle ligne.
la source
locate
base de données serait-elle plus rapide que l'exécutionfind
?locate \* | grep -v "^/home/"
- a également l'avantage de rechercher dans/boot/
et d'autres partitions du système.Puisque vous avez marqué votre question,
debian
le choix évident non mentionné est à utilisercruft-ng
si vous n'avez besoin d'aucune flexibilité oucruft
si vous ne souhaitez pas parcourir l'ensemble du système / locatedb.la source
Vous pouvez également utiliser la substitution de processus &
grep
&find
. Notez que legrep
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.la source