web-dev-qa-db-fra.com

Impossible de verrouiller le répertoire d'administration (/ var / lib / dpkg /), est-ce qu'un autre processus l'utilise?

Je reçois cette erreur en essayant d'utiliser apt-get:

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?  

Comment puis-je réparer cela?

986

Cela devrait être utilisé en dernier recours. Si vous l'utilisez négligemment, vous pouvez vous retrouver avec un système défectueux. Veuillez essayer le autreréponsespremier avant de le faire.

Vous pouvez supprimer le fichier de verrouillage à l'aide de la commande suivante:

Sudo rm /var/lib/apt/lists/lock

Vous devrez peut-être également supprimer le fichier de verrouillage dans le répertoire de cache

Sudo rm /var/cache/apt/archives/lock
Sudo rm /var/lib/dpkg/lock

Après cela, essayez d'ouvrir à nouveau Synaptic.

843
zurdo

Je vois à peu près toutes les réponses recommandent de supprimer le verrou. Je ne recommande pas de faire cela comme une première mesure; peut-être s'il n'y a pas d'alternative. Le verrou est placé lorsqu'un processus apt est en cours d'exécution et est supprimé à la fin du processus. S'il existe un verrou sans processus apparent en cours, cela peut signifier que le processus s'est bloqué pour une raison quelconque.

Si tu essayes

ps aux | grep [a]pt

ou

pgrep -a apt

cela interceptera les processus contenant le mot aptname__, au moins. Si vous voyez un processus apt-get ou un processus aptitudequi semble bloqué, vous pouvez essayer

Sudo kill processnumber

et si cela ne fonctionne pas, essayez

Sudo kill -9 processnumber

Cela devrait tuer le processus et peut supprimer le verrou. Tuer un processus aptou aptitudeest inoffensif sauf s'il se trouve en plein milieu de l'installation du package. Dans tous les cas, si le processus est bloqué, vous n'avez probablement pas d'autre choix que de le tuer.

Tuer directement un processus dpkgname__, s'il est présent, n'est pas une bonne idée, car si dpkgest actif, il manipule probablement la base de données de paquets et sa suppression peut laisser la base de données de paquets dans un état incohérent. c'est-à-dire corrompu.

Tuer un processus apt-get ou aptitudeest en général beaucoup plus sûr.

639
Faheem Mitha

Supprimez votre fichier /var/lib/dpkg/lock et forcez la reconfiguration du package.

Sudo rm /var/lib/dpkg/lock
Sudo dpkg --configure -a

Cela devrait fonctionner après cela.

215
Bruno Pereira

Vous obtiendrez ce message si vous oubliez d'utiliser Sudo lors de l'exécution d'une commande apt.

Sinon, cela indique que quelque chose d'autre installe ou supprime un logiciel et a verrouillé la base de données apt pendant qu'il effectue les actions. Les programmes qui peuvent faire cela sont:

  • Le centre de logiciel
  • Le gestionnaire de mise à jour
  • L'installateur de liens apt (je pense que cela passe maintenant par SC)
  • Les utilitaires de ligne de commande apt-get ou aptitude.
  • Le gestionnaire de paquets Synaptic

IMPORTANT: n'essayez que les opérations ci-dessous en dernier recours, car elles risquent de faire planter votre système. Commencez par supprimer toutes les instances en cours d'exécution de apt ou aptitude, comme indiqué dans la section réponse de Faheem .

Vous pouvez forcer le verrouillage en supprimant le fichier, mais il n'est pas recommandé de fermer d'abord le programme qui tient le verrou en toute sécurité , car vous risqueriez de corrompre interrompre une installation (mauvais). La commande fournie par João devrait fermer le programme qui détient le verrou, puis le supprimer, mais ne vous protégera pas des interruptions d'installation:

Sudo fuser -cuk /var/lib/dpkg/lock; Sudo rm -f /var/lib/dpkg/lock   

Et la même commande peut être utilisée pour le verrou de cache d'apt:

Sudo fuser -cuk /var/cache/apt/archives/lock; Sudo rm -f /var/cache/apt/archives/lock
104

Le moyen le plus susceptible de frapper ceci est:

  • démarrer Ubuntu
  • démarrer un terminal
  • tapez Sudo apt-get install whatever

et la ligne de commande apt se superpose à update-manager interrogation automatique.

Donc, si vous essayez à nouveau dans quelques minutes, cela devrait résoudre le problème.

91
poolie

Un seul programme peut tenir le verrou. Assurez-vous que vous n’exécutez pas aptitude, synaptic ou adepte. Fermez le programme et exécutez-le à nouveau. Il devrait fonctionner. Synaptic est ouvert, ou une autre fenêtre de terminal s'ouvre sous apt-get, ou le gestionnaire de mise à jour est en cours d'exécution. Vérifiez-le et voyez s'il est en cours d'exécution, le cas échéant les exécute, fermez-le et réessayez.

Essayez cette commande dans le terminal pour trouver ce qui fonctionne

ps -e | grep -e apt -e adept | grep -v grep

Note:
Si cela n’imprime rien, tapez ce qui suit dans le terminal pour enlever le verrou

Sudo rm /var/lib/dpkg/lock    
Sudo rm /var/cache/apt/archives/lock

Vous pouvez maintenant installer n’importe quel forfait.

50
karthick87

Jusqu'ici, le meilleur moyen de le faire fonctionner sans interrompre une éventuelle installation en arrière-plan (comme cela pourrait être le cas en supprimant le fichier de verrouillage) consiste à arrêter le service à l'aide d'apt:

Erreur:

# Sudo apt-get upgrade
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?`

Solution:

Sudo systemctl stop apt-daily.timer

Après la mise à niveau du système, je suggère de l'activer à nouveau, car le bogue le verrouillant pourrait être corrigé avec la mise à niveau.

Sudo systemctl start apt-daily.timer

Je n'ai pas vérifié que cette erreur est corrigée après la mise à niveau. Je vais ajouter un nouveau commentaire une fois que j'ai vérifié

45
Jairelee

Tout d’abord, nous devrions vérifier quel processus a créé le fichier de verrouillage en utilisant lsof:

Sudo lsof /var/lib/dpkg/lock

ou dans une autre situation où /var/lib/apt/lists/lock est problématique:

Sudo lsof /var/lib/apt/lists/lock

La sortie sera proche de quelque chose comme:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
apt-get   12127 root   4uW  REG  252,1        0    86   /var/lib/apt/lists/lock

Ensuite, nous devrions vérifier ce que fait la commande, nous pouvons le trouver en utilisant ps, pgrep etc; la commande est apt-get alors je lance:

pgrep apt-get -a

Le commutateur -a liste la commande complète pour moi, dans mon cas, il s'agit de:

 pgrep -a apt-get
 12127 apt-get update

nous pouvons voir que la sous-commande update est en cours d'exécution. Je pourrais également exécuter quelque chose comme ceci:

ps -f 12127

qui produit:

UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     12127 12126  0 09:39 pts/0    S+     0:00 apt-get update

Dans ce cas, j'attendrais une minute pour que la ressource soit libérée et si, après 2 ou 3 minutes, le problème persiste ou si la commande est une chose qui ne me concerne pas ou qui ne nuit pas au système (comme ce code apt-get update), j'envoie un message. SIGTERM au processus:

Sudo kill -15 12127

Cela devrait faire le travail, sinon, je vais envoyer SIGINT cette fois (c’est comme appuyer sur CTRL+C):

Sudo kill -2 12127

Si cela ne fonctionne pas aussi, nous devrions envoyer un SIGHUP (kill -1), et finalement si rien ne fonctionne, je tue simplement le processus:

Sudo kill -9 12127

ou

Sudo pkill -9 apt-get

Ensuite, je supprime les ressources occupées:

Sudo rm /var/lib/apt/lists/lock
32
Ravexina

Cette erreur peut peut être provoquée par le gestionnaire de mise à jour essayant d'actualiser automatiquement la liste des packages en arrière-plan, généralement juste après votre connexion, verrouillant ainsi le répertoire.

Dans ce cas, attendez quelques secondes (ou plus, si votre dernière mise à jour date d'il y a longtemps) pour qu'elle soit terminée ou lancez Update Manager pour vérifier l'état.

20
Batsu

Cela se produira si "Update Manager" est exécuté en parallèle pour toute vérification de mise à jour ou installation en tant que processus d'installation verrouille. Si vous faites face à la même erreur sans que 'Update Manager' ne s'exécute, vous devez le supprimer de /var/lib/dgkg/lock, ce que vous ne pouvez certainement pas faire manuellement.

Sudo fuser -cuk /var/lib/dpkg/lock
Sudo rm -f /var/lib/dpkg/lock

fonctionne bien. Extrait de: https://askubuntu.com/a/15469/68707

18
Nabeel Ahmed

Ne soyez pas si rapide pour supprimer quelque chose, cela pourrait endommager totalement votre système; attendez plutôt que le programme en cours d'installation ou de désinstallation ait terminé sa tâche, après quoi vous aurez accès. Si vous pensez qu'il n'y a rien d'installation ou de désinstallation en cours, redémarrez simplement votre système avec la commande Sudo reboot.

13
Wessi

Si vous avez des mises à jour de sécurité configurées pour une installation automatique, cela se produira fréquemment. J'attends littéralement 30 secondes et le problème est résolu. Il suffit de jeter cela au cas où quelqu'un d'autre rencontrerait ce problème.

10
Wh33t

Dans mon cas, j'ai dû attendre plusieurs minutes pour que le verrou soit libéré (ressemble à apt utilisé pour le conserver). Tout cela s'est passé juste après le démarrage du système.

5
Pavel Vlasov

J'ai eu ce problème à plusieurs reprises. Pour moi, c’était presque toujours dû à apt-get ou à une interface graphique qui l’appelait se faire accrocher pour une raison quelconque. Je devais le tuer, ce qui laissait diverses serrures en place.

Les autres réponses soulèvent de très bons points sur la nécessité de s’assurer qu’aucune mise à jour n’est en cours d’exécution avant de procéder de manière radicale, telle que la suppression des fichiers verrouillés. Cependant, une fois que vous êtes sûr que ce n'est pas le cas, ce qui suit fonctionne généralement pour moi. Je l'ai eu en lisant de nombreuses réponses à des questions comme celle-ci.

Bien que tout ou partie de cela soit présenté dans les autres réponses, cela résume le correctif en quelques commandes.

Sudo fuser -vki /var/lib/dpkg/lock
Sudo fuser -vki /var/cache/apt/archives/lock
Sudo fuser -vki /var/cache/debconf/config.dat
Sudo dpkg --configure -a

Utilisez cette option pour déverrouiller le système de paquetages après une mise à jour bloquée ou terminée sans terminer de quelque manière que ce soit. Ces commandes doivent être exécutées dans l'ordre présenté.

4
Joe

Sudo rm -f /var/lib/apt/lists/lock et essayez à nouveau.

apt-fast PEUT être tenu responsable de ne pas déverrouiller correctement; cela se produit parfois lorsque vous abandonnez aussi apt-get ou dpkg.

4
ish

Dans mon cas, X est tombé en panne alors que apt-get était encore en train de supprimer les anciens noyaux. J'ai utilisé le Moniteur système pour confirmer qu'il était toujours en cours d'exécution et non bloqué. Tout allait bien une fois le processus terminé.

3
wjandrea

Je ne vois pas cette réponse ailleurs que sur Ubuntu 16.04, j'ai aussi rencontré ce problème. La cause était le temps sur mon ordinateur a été mis dans le futur. (C’est parce que je suis sur un système à double démarrage Windows + Ubuntu et que je suppose que j’ai gaché l’heure locale par rapport à l’heure UTC.)

Une chose étrange était que la date et l'heure du fichier verrouillé étaient exactement la date et l'heure auxquelles j'ai exécuté le programme.

J'ai ensuite utilisé "fuser" comme décrit dans les messages précédents et apt fonctionnait, mais je recevais des plaintes concernant la nécessité d'exécuter dpkg -a -reconfigure. Quand j'ai fait ça, j'ai eu des erreurs comme:

newline in field name #padding

dans des fichiers tels que '/ var/lib/dpkg/updates/0003'.

Tout cela était très étrange car je ne l'avais jamais vu auparavant. Alors, je pensais que c'était des symptômes et j'ai changé mes données et mon heure manuellement. Je savais qu'il y avait un problème avec la date/heure lorsque je me suis connecté, mais je l'ignorais. (Auparavant, il le réglait automatiquement via Internet et NTP).

Ensuite, tous les problèmes ci-dessus ont été résolus ... J'espère que cela aidera quelqu'un d'autre! Le symptôme le plus notable est peut-être que la date/heure du fichier de verrouillage est la date/heure exacte à laquelle vous essayez d'exécuter la commande.

3
Ray

Vérifiez le lanceur pour voir si Software Updater est en cours d'exécution. Si c'est le cas, maximisez-le et regardez ce qu'il fait. S'il est toujours en train de vérifier, attendez qu'il soit terminé. À la fin, il vous dira peut-être que le logiciel est à jour, fermez donc l'application. S'il est indiqué que des mises à jour sont disponibles, effectuez la mise à jour ou cliquez sur "me le rappeler plus tard". Après la fermeture de cette application, vous pouvez revenir à l'utilisation de apt-get ou apt.

Si Software Updater n'est pas en cours d'exécution, utilisez simplement le tiret pour l'invoquer et attendre son achèvement, puis décidez si vous souhaitez mettre à jour ou cliquez sur "rappelez-moi plus tard". Après la fermeture de cette application, vous pouvez revenir à l'utilisation de apt-get ou apt.

3
H2ONaCl
Sudo killall -9 apt && Sudo killall -9 dpkg

À utiliser à vos risques et périls

2
noone

Dans mon cas, je recevais le même message en ne réalisant pas que j'étais passé en utilisateur root et que j'essayais Sudo apt-get. Une fois que j'ai réalisé cela, j'ai juste lancé apt-get, et cela a fonctionné. Stupide, mais cela pourrait quand même expliquer l'erreur pour certains.

2
BluePython