Les symptômes
- « dpkg: erreur de traitement du paquet linux-image-X.Y.Z-generic »
- « E: Sub-process /usr/bin/dpkg returned an error code (1) »
linux-headers-6.17.0-XX-genericlaissé non configuré, dépendances en cascade- « dkms autoinstall ... failed for backport-iwlwifi » ou « ... for evdi »
- « Impossible d'obtenir le verrou /var/lib/dpkg/lock-frontend »
apt updatequi échoue sur un dépôt qui n'a rien à voir avec le noyau
Le diagnostic en trois commandes :
sudo dpkg --audit
dkms status
dpkg -l | grep -E "backport-iwlwifi-dkms|evdi"
Les deux causes racines
- 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 scriptpostinstde 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. - 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 :
- Neutraliser :
sudo mv /etc/kernel/postinst.d /etc/kernel/postinst.d.bak sudo mkdir /etc/kernel/postinst.d - 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 - Remettre les scripts :
sudo rm -r /etc/kernel/postinst.d sudo mv /etc/kernel/postinst.d.bak /etc/kernel/postinst.d - Recompiler VirtualBox et régénérer GRUB :
sudo dkms autoinstall sudo modprobe vboxdrv sudo update-grub
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 :
| État | Sens | Quoi faire |
|---|---|---|
ii | installé | rien |
iF ou iU | à moitié installé ou non configuré | sudo dpkg --configure -a, puis les sections ci-dessus |
rc | désinstallé, restes de configuration | inoffensif ; 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
| Objectif | Commande |
|---|---|
| Paquets à moitié configurés | sudo dpkg --audit |
| Finir les configurations | sudo dpkg --configure -a |
| Réparer les dépendances | sudo apt --fix-broken install |
| Retirer un parasite | sudo dpkg --remove --force-remove-reinstreq PAQUET |
| Qui tient le verrou | sudo fuser /var/lib/dpkg/lock-frontend |
| Désactiver un dépôt | sudo sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/FICHIER.list |