Retour à l'accueil

apt et dpkg bloqués

Paquets parasites, scripts postinst qui bloquent tout, verrous, dépôts tiers cassés, résidus de noyaux : débloquer sans rien casser

Les symptômes

Le diagnostic en trois commandes :

sudo dpkg --audit
dkms status
dpkg -l | grep -E "backport-iwlwifi-dkms|evdi"

Les deux causes racines

  1. Le paquet parasite backport-iwlwifi-dkms. Une vieille procédure d'installation le faisait installer « pour VirtualBox » ; ce pilote Wi-Fi Intel backporté n'a aucun rapport et échoue à compiler contre les noyaux récents. Comme DKMS tourne dans le script postinst de chaque paquet noyau, l'échec casse la configuration de tous les noyaux en cascade et bloque dpkg au complet. evdi-dkms (stations d'accueil DisplayLink) fait le même coup sur certains postes.
  2. Le métapaquet rolling linux-generic-hwe-24.04. Il tire la série 6.17 puis 7.0, contre lesquelles VirtualBox 7.0.16 ne compile pas. Voir Le standard 6.14.

Retirer un paquet parasite

sudo dpkg --remove --force-remove-reinstreq backport-iwlwifi-dkms
sudo dpkg --remove --force-remove-reinstreq evdi-dkms

Ne retirez evdi-dkms que si le poste n'utilise pas de station d'accueil DisplayLink. Puis débloquer :

sudo dpkg --configure -a
sudo apt --fix-broken install

Quand les scripts postinst bloquent tout

Tant qu'un module DKMS échoue, aucun paquet noyau ne se configure ni ne se retire. On neutralise temporairement les scripts du noyau, on fait le ménage, on les remet :

  1. Neutraliser :
    sudo mv /etc/kernel/postinst.d /etc/kernel/postinst.d.bak
    sudo mkdir /etc/kernel/postinst.d
  2. Faire le ménage : retirer le parasite (section précédente), purger le noyau indésirable s'il n'est pas actif :
    sudo dpkg --purge --force-remove-reinstreq linux-image-6.17.0-XX-generic linux-headers-6.17.0-XX-generic linux-headers-generic-hwe-24.04 linux-image-generic-hwe-24.04 linux-generic-hwe-24.04
    sudo dpkg --configure -a
    sudo apt --fix-broken install
  3. Remettre les scripts :
    sudo rm -r /etc/kernel/postinst.d
    sudo mv /etc/kernel/postinst.d.bak /etc/kernel/postinst.d
  4. Recompiler VirtualBox et régénérer GRUB :
    sudo dkms autoinstall
    sudo modprobe vboxdrv
    sudo update-grub
Si la machine roule SUR le noyau à purger (6.17 ou 7.0), installez d'abord un 6.14 et redémarrez dessus (plan C) : on ne purge jamais le noyau actif. Et ne réinstallez pas linux-generic-hwe-24.04 : il ramènerait le 7.0 au prochain upgrade.

Les verrous qui traînent

« Impossible d'obtenir le verrou » veut dire qu'un autre apt, dpkg ou le gestionnaire de mises à jour tourne encore, parfois en arrière-plan.

sudo fuser /var/lib/dpkg/lock-frontend
ps aux | grep -E "apt|dpkg" | grep -v grep

Attendre qu'il finisse (une mise à jour automatique peut prendre plusieurs minutes), ou fermer le gestionnaire de mises à jour graphique. Ne supprimez pas le fichier de verrou à la main tant qu'un processus est listé.

Les dépôts tiers qui cassent apt update

Des dépôts sans lien avec le noyau font échouer apt update : GitHub Desktop (shiftkey), miroirs à certificat SSL invalide, Spotify à signature GPG expirée. On les désactive sans désinstaller l'application, en commentant leur ligne :

ls /etc/apt/sources.list.d/
sudo sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/NOM-DU-DEPOT.list
sudo apt update

Remplacez NOM-DU-DEPOT par le fichier fautif que apt update nomme dans son erreur. Les dépôts au format .sources se désactivent en ajoutant une ligne Enabled: no dans le fichier.

Vérifier la santé d'apt sans rien installer

sudo apt install --dry-run htop
sudo apt update
sudo dpkg --audit
sudo apt install --reinstall coreutils

Les trois premières ne doivent produire aucune erreur ; la quatrième réinstalle un paquet inoffensif et prouve que dpkg fonctionne de bout en bout.

Les états dpkg

Dans dpkg -l, les deux premières lettres de chaque ligne :

ÉtatSensQuoi faire
iiinstallérien
iF ou iUà moitié installé ou non configurésudo dpkg --configure -a, puis les sections ci-dessus
rcdésinstallé, restes de configurationinoffensif ; sudo dpkg --purge PAQUET pour faire propre

Les résidus dans /lib/modules et /boot

Après un purge, des dossiers fantômes restent dans /lib/modules/ (modules DKMS partiels). Le script de diagnostic les liste au point 11. Vérification de sécurité avant tout rm : uname -r doit donner le noyau que vous gardez, et le dossier à retirer ne doit pas être le sien.

uname -r
ls /lib/modules/
dpkg -l | grep -E "^ii" | grep linux-image

Un dossier de /lib/modules/ sans paquet linux-image correspondant en ii est un résidu :

sudo rm -rf /lib/modules/7.0.0-XX-generic
sudo update-grub
sudo apt autoremove --purge

autoremove ne touche pas aux noyaux marqués « manual » (plans A et B) ; s'il propose de retirer un noyau que vous gardez, répondre n. ls /boot/ ne doit montrer que les vmlinuz et initrd des noyaux gardés.

Récapitulatif

ObjectifCommande
Paquets à moitié configuréssudo dpkg --audit
Finir les configurationssudo dpkg --configure -a
Réparer les dépendancessudo apt --fix-broken install
Retirer un parasitesudo dpkg --remove --force-remove-reinstreq PAQUET
Qui tient le verrousudo fuser /var/lib/dpkg/lock-frontend
Désactiver un dépôtsudo sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/FICHIER.list

Les pages du site