Le problème
Il arrive qu'un paquet Debian ou Ubuntu ne s'installe pas correctement et ne puisse plus être désinstallé. Le système de mise à jour du système est alors complètement cassé et aucune commande classique, que ce soit apt-get, aptitude ou dpkg, ne permet de corriger le problème.
Prenons l'exemple du paquet slapd qui était dans ce cas
sous Debian il y a quelque temps.
Si l'on tente de supprimer le paquet slapd, le gestionnaire de
paquet demande de le réinstaller correctement :
[root@master]$ aptitude remove slapd The following packages will be REMOVED: slapd Need to get 0 B of archives. After unpacking 4162 kB will be freed. dpkg: error processing slapd (--remove): Package is in a very bad inconsistent state - you should reinstall it before attempting a removal. configured to not write apport reports Errors were encountered while processing: slapd E: Sub-process /usr/bin/dpkg returned an error code (1) A package failed to install. Trying to recover:
Il est malheureusement impossible de le réinstaller ou de terminer l'installation :
[root@master]$ apt-get install slapd […] Preparing to replace slapd 2.4.25-1+b1 (using .../slapd_2.4.25-1.1_i386.deb) ... sed: can't read /etc/ldap/slapd.d/cn=config.ldif: No such file or directory invoke-rc.d: initscript slapd, action "stop" failed. dpkg: warning: subprocess old pre-removal script returned error exit status 2 dpkg - trying script from the new package instead ... sed: can't read /etc/ldap/slapd.d/cn=config.ldif: No such file or directory invoke-rc.d: initscript slapd, action "stop" failed. dpkg: error processing /var/cache/apt/archives/slapd_2.4.25-1.1_i386.deb (--unpack): subprocess new pre-removal script returned error exit status 2 configured to not write apport reports Backing up /etc/ldap/slapd.d in /var/backups/slapd-2.4.25-1.1... done. grep: /etc/ldap/slapd.d/cn=config/olcDatabase*: No such file or directory sed: can't read /etc/ldap/slapd.d/cn=config.ldif: No such file or directory invoke-rc.d: initscript slapd, action "start" failed. dpkg: error while cleaning up: subprocess installed post-installation script returned error exit status 2 Errors were encountered while processing: /var/cache/apt/archives/slapd_2.4.25-1.1_i386.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
La solution : désinstaller manuellement le paquet
Pour désinstaller manuellement le paquet cassé exécuter les deux commandes ci-dessous, en tant que root sous Debian, précédées de sudo sous Ubuntu :
mv /var/lib/dpkg/info/PAQUET.* /tmp/ dpkg --remove --force-remove-reinstreq PAQUET