web-dev-qa-db-fra.com

Comment fonctionne la commande apt-get purge?

Comment 'it' (c'est-à-dire purge) sait-il où se trouvent les dépendances et les fichiers de configuration?

Comment purge découvre-t-il qu'un logiciel particulier a créé un fichier donné?

Existe-t-il une sorte de fichier de configuration qui enregistre la création de tous les fichiers par programmes, afin que purge puisse accéder aux enregistrements et faire correspondre les fichiers au programme lors de la suppression?

7
TellMeWhy

Oui, il existe de tels fichiers. En particulier, *.list, *.postrm et *.conffiles, qui sont tous stockés dans le répertoire /var/lib/dpkg/info.

Les fichiers .postrm sont des scripts de post-suppression, qui s'exécutent après la suppression d'un paquet. Ces scripts sont sous la responsabilité des responsables de la maintenance du package, et chaque script est adapté au package spécifique. Si vous examinez /var/lib/dpkg/info/usb-modeswitch-data.postrm par exemple, vous verrez quelque chose comme ceci:

#!/bin/sh
set -e
# Automatically added by dh_installdeb
dpkg-maintscript-helper rm_conffile "/etc/usb_modeswitch.d/230d:0001" 20101222-3 -- "$@"
# End automatically added section

Il y a aussi les fichiers *.list et *.conffiles, qui sont essentiellement des listes. gnome-terminal.list, par exemple, répertorie tous les fichiers et répertoires créés lors de l'installation de gnome-terminal. Les fichiers *.list sont très utiles pour déterminer ce qui est installé. *.conffiles liste tous les fichiers de configuration d'un paquet. Par exemple, alors que xterm.list donne tout les fichiers, `xterm.conffiles * ne donne que des conffiles. En d'autres termes, le contenu de conffile sera également présent dans le fichier liste.

$ cat /var/lib/dpkg/info/xterm.conffiles                                       
/etc/X11/app-defaults/XTerm
/etc/X11/app-defaults/KOI8RXTerm-color
/etc/X11/app-defaults/XTerm-color
/etc/X11/app-defaults/UXTerm-color
/etc/X11/app-defaults/UXTerm
/etc/X11/app-defaults/KOI8RXTerm

Je ne sais pas trop comment fonctionne *.conffiles. Mon hypothèse est que les scripts de post-suppression sont prioritaires et que apt-get utilise simplement ces *.conffiles pour vérifier que les fichiers qui y sont répertoriés ont été supprimés.

Comme @ A.B. m'a rappelé correctement, il y a aussi *.prerm fichiers, dont certains suppriment les fichiers .conf, mais pas nécessairement, par exemple celui pour xpdf app supprimait les fichiers dans le répertoire /etc/xpdf/includes

2