Menu Fermer

Could not get lock /var/lib/dpkg/lock ou dpkg: error: dpkg frontend lock : les solutions

Les distributions Linux à base de Debian comme Ubuntu, Mint utilisent le système de paquets dpkg.
Lorsque vous tentez d’installer, mettre à jour un paquet, vous pouvez rencontrer l’erreur :

E: Could not get lock /var/lib/dpkg/lock – open (11 Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/) is another process using it?

Une autre variante est dpkg: error: dpkg frontend lock.

Cette erreur se produit lorsque le fichier lock est présent, généralement, car le processus dpkg est en cours de fonctionnement ou s’est mal fermé.
Dans ce tutoriel, je fournis toutes les solutions pour résoudre ce problème d’utilisation de dpkg.

Could not get lock /var/lib/dpkg/lock ou dpkg: error: dpkg frontend lock : les solutions

Could not get lock /var/lib/dpkg/lock ou dpkg: error: dpkg frontend lock : les solutions

Lorsque la commande dpkg est appelée, celui-ci créé un fichier de verrouillage /var/lib/dpkg/lock.
Cela évite d’avoir plusieurs instances de dpkg qui fonctionnent en même temps.
Si le fichier existe déjà et que le système ne parvient pas à la supprimer, vous obtenez l’erreur suivante :

E: Impossible de verrouiller /var/lib/dpkg/lock - open (11 Ressource temporairement non disponible)
E: Impossible de verrouiller le répertoire d'administration (/var/lib/dpkg/), un autre processus l'utilise-t-il? 

Méthode 1 – Tuer les processus dpkg

Cela peut se produire :

  • Si une instance de dpkg est déjà en cours de fonctionnement
  • dpkg a planté durant son utilisation (par exemple avec un segfault)

Essayez de résoudre cette erreur en utilisant la commande kill pour tuer toutes occurrences de dpkg et d’APT :

sudo killall -9 dpkg
sudo killall -9 apt-get
sudo rm -f /var/lib/dpkg/lock
sudo rm /var/lib/dpkg/lock-frontend

Vous pouvez aussi tuer les processus qui ouvrent les fichiers de lock, combiner la commande kill avec lsof -t :

kill -9 `lsof -t /var/lib/dpkg/lock`
kill -9 `lsof -t /var/lib/apt/lists/lock`
kill -9 `lsof/var/lib/dpkg/lock-frontend`

Méthode 2 – Trouver ce qui verrouille dpkg

La solution précédente ne fonctionnera pas, si dpkg est lancé par un autre processus.
Par exemple, une mise à niveau du système est en cours par APT.

Sinon, vous pouvez le faire manuellement.
Commencez par lister les PID des processus qui ouvre les fichiers de lock APT manuellement :

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

A nouveau, on utilise la commande kill pour arrêter le processus et déverrouiller le fichier lock de dpkg.

sudo kill -9 <PID>

Cas du “dpkg: error: dpkg frontend is locked by another process”

Dans cet exemple, dpkg indique qu’un autre processus a ouvert le fichier lock-frontend.
Il indique le PID du processus, soit 4545.

dpkg: error: dpkg frontend lock was locked by another process with pid 4545
dpkg: error: dpkg frontend is locked by another process

Il suffit d’utiliser la commande kill pour tuer le processus à partir de son PID :

sudo kill -9 4545
dpkg: error: dpkg frontend is locked by another process : les solutions

Si le PID n’est pas indiqué, utilisez la commande lsof pour trouver ce qui ouvre le fichier lock-frontend :

sudo lsof /var/lib/dpkg/lock-frontend

Par exemple ci-dessous, il s’agit du processus apt-get avec le PID 4793 :

sudo lsof /var/lib/dpkg/lock-frontend
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
apt-get 4793 root    4uW  REG    8,1        0 112197840 /var/lib/dpkg/lock-frontend
Récupérer le PID du processus qui ouvre le fichier /var/lib/dpkg/lock-frontend

Puis utilisez le processus avec la commande kill en indiquant le PID :

sudo kill -9 <PID>

Enfin supprimer le fichier lock-frontend et reconfigurez les paquets :

sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a