Mis à part le fait que les noms de “paquets” que j’ai utilisés en exemple sont bidons, tu as tout ce qu’il faut ci-dessous.
D’abord, transformer tes listes de paquets dkpg --get-selections en listes utilisables ne contenant que des noms de paquets, un par ligne (perso je n’utilise jamais dpkg --get-selections mais aptitude search ~i -F ‘%p’ ça évite cette étape) :
[code]# cat liste-dpkg
acpi-support-base install
acpid install
adduser install
cat liste-dpkg | sed ‘s@^([a-zA-Z0-9+.-]+).*$@\1@g’ > liste-utilisable
cat liste-utilisable
acpi-support-base
acpid
adduser[/code]
Ensuite pour déterminer quels paquets doivent être réinstallés (car ils ont été supprimés depuis l’install initiale) et quels paquets doivent être supprimés…
Note bien que les fichiers origine et actuel doivent être triés dans le même ordre pour que comm fonctionne (d’où les deux commandes sort pour s’en assurer).
[code]# ls
actuel
origine
sort origine -o origine
cat origine
a
b
c
sort actuel -o actuel
cat actuel
a
b
d
e
f
comm -2 -3 origine actuel > reinstaller
cat reinstaller
c
comm -1 -3 origine actuel > supprimer
cat supprimer
d
e
f[/code]
Enfin pour appliquer les listes de paquets calculées ci-dessus :
[code]# aptitude install $(cat reinstaller)
aptitude purge $(cat supprimer)[/code]
À noter que cette procédure peut également être utilisée pour s’assurer que deux machines ont exactement les mêmes paquets installés (origine est alors la machine “modèle”, et actuel est la machine “à synchroniser”). C’est d’ailleurs ce que je fais quand je m’installe une nouvelle machine personnelle, ça me fait gagner beaucoup de temps. 
Y’aurait probablement moyen d’arriver au même résultat avec l’option –set-selections de dpkg mais vu que je peux pas blairer dpkg je l’utilise le moins possible. 