Il y a quelques bonnes réponses ici, mais je voulais juste ajouter une méthode non-lsof pour trouver l'utilisateur de verrouillage de dpkg.
Étape 1 : Trouvez qui verrouille dpkg :
Option #1 : Utiliser lsof (pas toujours installé sur la machine)
lsof /var/lib/dpkg/lock
Option #2 : Utiliser bash
for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done
Étape 2 : Décidez ce que vous voulez faire avec l'utilisateur actuel de dpkg
Si ce processus n'existe pas, il n'y a rien à décider, passez simplement à l'étape suivante.
Sinon, vous devez décider si vous voulez tuer le processus ou le laisser se terminer de façon élégante. Si vous décidez de le tuer, utilisez simplement kill <pid>
. Si le processus ne s'arrête toujours pas, vous pouvez envisager de le tuer en utilisant la commande kill -9 <pid>
Mais cela pourrait créer certaines incohérences et je vous le déconseille, à moins que vous ne sachiez ce que vous faites.
Étape 3 : supprimer le fichier de verrouillage
sudo rm /var/lib/dpkg/lock
Étape 4 : Corriger l'état interne de dpkg
sudo dpkg --configure -a