Comment trouver des fichiers dans un système Debian non installé ou créé par dpkg?

20

J'ai installé certaines choses manuellement dans le passé et je voudrais éliminer tous les fichiers associés. J'ai donc besoin d'un moyen pour trouver automatiquement tous les fichiers (dans / usr, par exemple) qui ne sont inclus dans aucun des paquets actuellement installés sur le système Debian. Cependant, je devrais également filtrer les fichiers créés lors de l'installation du package (par des scripts de post-installation de dpkg et des choses similaires).

Karol
la source
1
Voir aussi cette question: unix.stackexchange.com/questions/18038/…
Taha Jahangir

Réponses:

25

Utilisez le cruftpackage:

cruft est un programme pour rechercher dans le système tout ce qui ne devrait pas être là, mais qui l'est; ou pour tout ce qui devrait être là, mais qui ne l'est pas.

Teddy
la source
4

Vous pouvez essayer quelque chose comme ceci:

dpkg -L --list-all-package-files | grep "^/usr" > dpkg-files.dat   **(don't know the dpkg option "--list-all-package-files", read mand dpkg)**
find /usr -type f -o -type l > all-usr-files.dat
sort dpkg-files.dat all-usr-files.dat | uniq -c | grep " 1 "

De cette façon, vous obtiendrez tous les fichiers qui se trouvent dans / usr mais pas n'importe quel fichier de package. Comme un premier coup, cela pourrait vous aider.

rems
la source
Je ne trouve aucun moyen d'obtenir -L pour lister plus d'un paquet à la fois, mais vous pouvez obtenir le même effet à partir degrep -h "^/usr" /var/lib/dpkg/info/*.list > dpkg-files.dat
DerfK
Il n'y a pas d' --list-all-package-filesoption.
Karol
@DerfK: Vous pouvez obtenir -l pour lister plus d'un paquet, par exemple comme ceci:dpkg -L `aptitude search ~i -F "%p"`
Karol
Le problème avec cette approche est qu'il y a plus de fichiers ou de liens dans / usr que ceux réellement répertoriés par dpkg. Par exemple, / usr / bin / aptitude existe, probablement créé par un script de post-installation, mais il n'est pas répertorié par dpkg. Donc, je suppose que ce que je veux ici est une liste de fichiers installés ou créés en installant n'importe quel package (cela changera la question).
Karol
@Karol: D'autres sources de fichiers pourraient être des détournements et des alternatives. La sortie est sous forme de phrase mais vous pouvez voir les détournements avec dpkg-divert --listcomme racine (ceux-ci reçoivent généralement un suffixe). Les alternatives sont un peu plus dures, le format de fichier dans / var / lib / dpkg / alternatives / est maladroit et update-alternativesme dit à peu près tout, MAIS le nom du lien. find /usr -lname '/etc/alternatives/*'est probablement le moyen le plus simple de les obtenir.
DerfK