99 votes

dpkg : error : la base de données dpkg status est verrouillée par un autre processus

Je me demandais juste si quelqu'un pouvait me dire ce que cela signifie :

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
reidsr@ubuntu:~$ sudo dpkg --configure -a
dpkg: error: dpkg status database is locked by another process
reidsr@ubuntu:~$ 

Comment puis-je exécuter sudo dpkg --configure -a manuellement ?

3voto

Deepak Singhvi Points 131

Ce qui suit devrait vous aider :

sudo rm /var/lib/dpkg/lock

sudo dpkg --configure -a

2voto

Daniel Trugman Points 121

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

1voto

Aucune réponse de ce fil de discussion ne l'a résolu pour moi. J'avais supprimé les fichiers de verrouillage, et il n'y avait pas de PID en cours d'exécution, pourtant, à chaque fois que j'exécutais sudo dpkg --configure -a Le Shell était bloqué sur l'une des tâches "apt" précédemment verrouillées que j'avais forcées en fermant le terminal à la fin. J'ai également tué les processus apt en utilisant sudo killall apt apt-get . La tâche la plus appropriée dans mon cas était " Setting up docker-ce (5:20.10.1~3-0~ubuntu-bionic) ".

Solution dans mon cas :

  • Démarrez en mode de récupération.
  • Dans le menu de récupération, choisissez "root" afin de "Drop to root Shell prompt".
  • Appuyez sur la touche Enter.
  • Tapez 'sudo dpkg --configure -a'.
  • Continuez ce que vous étiez sur le point de faire, cela devrait fonctionner maintenant, et / ou redémarrez simplement.

Veuillez voir les captures d'écran et l'explication détaillée (par exemple, comment obtenir le mode de récupération au démarrage) dans la réponse de docker ps stuck docker install se bloque également .

0voto

DuckMaestro Points 121

Cela peut se produire si le processus de mise à niveau a été interrompu (par exemple, si votre connexion a été perdue). Vous pouvez essayer d'utiliser screen en tant que root ( sudo su ) pour revenir dans la session.

screen -r

0voto

Joe the Coder Points 101

Une chose qui n'est pas mentionnée : vous pouvez activer les mises à niveau automatiques ou sans surveillance. Si c'est le cas, unattended-upgr est probablement en train de tenir le verrou sur dpkg. Dans ce cas, supprimer de force le fichier verrou est PAS une bonne idée !

Vous pouvez vérifier s'il est en cours d'exécution en utilisant ce qui suit :

ps -A | grep unattended-upgr

Vous pouvez également vérifier si c'est le processus qui détient le verrou en utilisant l'étape 1 de la réponse de Daniel Trugman. L'option #2 (en utilisant bash) était la seule qui me montrait le PID qui avait le fichier verrouillé, et me dirigeait vers unattended-upgr.

A priori, vos deux seules options sont d'attendre patiemment la fin des mises à jour, ou de désactiver temporairement les mises à jour automatiques, d'installer le paquet nécessaire et de le réactiver.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X