Incapaz de bloquear el directorio de administración (/ var / lib / dpkg /) ¿otro proceso lo está usando?

1026

Recibo este error cuando intento usar 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?  

¿Cómo puedo arreglar esto?

La Ode Adam Saputra
fuente
18
Esto también es cierto si reinicia? Tal vez un hilo de apt viejo está bloqueando el archivo, necesita averiguar cuál y matarlo o simplemente reiniciarlo lo hará.
Bruno Pereira
44
Este procedimiento casi siempre soluciona este problema, y ​​cuando no lo hace, su salida (el texto de la Terminal) a veces es útil. Si decide hacerlo, puede agregar este texto a su pregunta.
Eliah Kagan
54
Puede usar sudo lsof /var/lib/dpkg/lockpara encontrar el proceso que posee el archivo de bloqueo (si está vacío, suponga que el bloqueo se ha dejado de un arranque anterior y puede ser sudo rmd), luego considere hacer un sudo kill -9 <PID>(obtener <PID> de la lsofsalida.
waltinator
11
Esto puede ser una señal de que algo más está instalando o eliminando software y ha bloqueado la base de datos de apt mientras realiza las acciones.
Foreever
55
En mi VM Ubuntu 18.04 hay un proceso llamado actualización desatendida, que se ejecuta mediante un proceso como root <pid> <ppid> 0 15:58 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install, que parece ejecutar una actualización adecuada cada vez que enciendo la máquina. Dependiendo del tamaño de la actualización (que a menudo corresponde al tiempo transcurrido desde que usé esa máquina la última vez), esto puede tardar entre 1 y 10 minutos en completarse. Después de eso, el bloqueo se libera para las instalaciones y actualizaciones manuales. Pruebe: sudo ps aux|grep apto `sudo ps aux | grep desatendido.
Kjetil S.

Respuestas:

875

Esto debería usarse como último recurso. Si usa esto descuidadamente, puede terminar con un sistema roto. Pruebe las otras respuestas primero antes de hacer esto.

Puede eliminar el archivo de bloqueo con el siguiente comando:

sudo rm /var/lib/apt/lists/lock

También es posible que deba eliminar el archivo de bloqueo en el directorio de caché

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

Después de eso, intente abrir Synaptic nuevamente.

zurdo
fuente
13
ok ... pero porque paso esto?
Jaime Hablutzel
40
@jaime: probablemente apt-get (o alguna interfaz gráfica de usuario) se detuvo durante la ejecución, dejando a apt en un estado bloqueado.
bouke
10
Aceptaría esto como la mejor respuesta. Corriga uno.
Anwar
99
@AnwarShah no, hay otras consideraciones antes de eliminar archivos del sistema.
Braiam
22
rm / var / lib / dpkg / lock; dpkg --configure -a:
WitchCraft
664

Veo que casi todas las respuestas recomiendan eliminar el bloqueo. No recomiendo hacerlo como primera medida; quizás si no hay alternativa. El bloqueo se coloca cuando se está ejecutando un proceso apto y se elimina cuando se completa el proceso. Si hay un bloqueo sin un proceso aparente en ejecución, esto puede significar que el proceso se atascó por alguna razón.

Si intentas

ps aux | grep [a]pt

o

pgrep -a apt

eso capturará procesos que contengan la palabra apt, al menos. Si ve un apt-getproceso o un aptitudeproceso que parece atascado, puede intentar

sudo kill processnumber

y si eso no funciona prueba

sudo kill -9 processnumber

Esto debería matar el proceso y puede eliminar el bloqueo. Matar un proceso apto aptitudees inofensivo a menos que esté realmente en medio de la instalación del paquete. En cualquier caso, si el proceso se atascó, probablemente no tenga más remedio que matarlo.

Matar un dpkgproceso directamente, si está presente, no es una buena idea, porque si dpkgestá activo, probablemente esté manipulando la base de datos del paquete, y matarlo puede dejar la base de datos del paquete en un estado inconsistente; es decir, corrompido.

En general, matar apt-geto aptitudeprocesar es mucho más seguro.

Faheem Mitha
fuente
18
@Link No creo que matar dpkgsea ​​una buena idea, porque generalmente dpkgestá manipulando la base de datos del paquete directamente, y esto podría causar corrupción.
Faheem Mitha
18
Si matar a dpkg puede dañar su base de datos, dpkg fue mal diseñado. Período.
Jay Sullivan
10
Para mí, esto resultó en un error dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.al ejecutar de sudo apt-get dist-upgradenuevo. Ejecutar el comando resolvió el problema. ¡Amo a Nix!
Wayne Phipps
55
Tenga en cuenta que killall apt-gethace lo mismo que su ps/ killcombo.
Cerin
3
Tenga en cuenta que descubrí que tenía que correr sudo dkpg --configure -adespués de matar el proceso de pícaro apto para que las cosas volvieran a la normalidad.
starbeamrainbowlabs
219

Elimine su /var/lib/dpkg/lockarchivo y fuerce la reconfiguración del paquete.

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

Debería funcionar después de esto.

Bruno Pereira
fuente
Estos comandos ayudaron, pero ahora cuando intenté instalar de nuevo, obtuve esta respuesta: No se pudo obtener lock / var / cache / apt / archives / lock - open. Creo que tendría que resolver el problema de desbloqueo anterior, pero dígame las palabras clave exactas para el comando. Soy un principiante absoluto.
kern
1
sudo- ejecutar el comando como root, rm- eliminar el archivo. Tal vez intentesudo rm /var/cache/apt/archives/lock
kubahaha
55
Esta no es una buena sugerencia: eliminar ciegamente la suerte puede corromper el estado de dpkg.
Poolie
55
¿Por qué no se arreglará solo hoy en día?
Marian Klühspies
2
Esto funcionó para mí. Los aws de arriba no lo hicieron.
1rq3fea324wre
108

Recibirá este mensaje si olvida usarlo sudoal ejecutar un comando apt.

De lo contrario, esto es una señal de que algo más está instalando o eliminando software y ha bloqueado la base de datos de apt mientras realiza las acciones. Los programas que pueden hacer esto son:

  • El centro de software
  • El administrador de actualizaciones
  • El instalador de enlaces apt (creo que esto ahora pasa por SC)
  • Las utilidades de línea de comando apt-get o aptitude.
  • El administrador de paquetes sinápticos

IMPORTANTE: solo intente lo siguiente como último recurso, ya que puede bloquear su sistema. Primero intente matar cualquier instancia en ejecución de apto aptitudecomo se describe en la respuesta de Faheem .

Puede forzar el bloqueo quitando el archivo, pero no se recomienda sin cerrar primero el programa que mantiene el bloqueo de forma segura , ya que podría causar daños o interrumpir una instalación (incorrecta). El comando proporcionado por João debería cerrar el programa que contiene el bloqueo y luego eliminar el bloqueo, pero no lo protegerá de la interrupción de la instalación:

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

Y se puede usar el mismo comando para el bloqueo de caché de apt:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Martin Owens -doctormo-
fuente
55
Estaba actualizando mi software cuando recibí el mensaje de error.
gota de lluvia
20
Esto se estrelló para mí-
umpirsky
55
sudo fuser -cuk /var/cache/apt/archives/lockdirectamente reinició mi computadora. apt-getahora está desbloqueado
Maxime R.
15
Esto bloqueó todo mi servidor.
에이 바
55
Matar apt o dpkg a mitad de camino no es una gran idea.
Poolie 02 de
99

La forma más probable de lograr esto es:

  • arrancar Ubuntu
  • iniciar una terminal
  • tipo sudo apt-get install whatever

y la línea de comandos se aptsuperpone con update-managersondeo automático.

Entonces, si intentas nuevamente en unos minutos, eso debería solucionarlo.

billar
fuente
21
Gran sugerencia en contraste con la media docena de respuestas que sugieren simplemente eliminar el archivo ;-) Ejecuté al azar el problema y lo más probable es que sea este.
Alex
2
Lo suficientemente seguro, tuvo que esperar un poco antes de que sudo apt-get installpudiera funcionar.
sargas
Bueno, esto no funciona siempre, sí, he usado reiniciar muchas veces. Si no es adecuado, intente con askubuntu.com/a/315791/378845 antes de quitar las cerraduras
Menuka Ishan
@menuka, ¿por qué no simplemente dejar que termine?
poolie
@poolie Porque hay otras restricciones que impiden que el proceso finalice
Menuka Ishan
52

Solo un programa puede mantener el bloqueo. Asegúrese de que no está ejecutando aptitude, synaptic o adept. Cierre el programa y ejecútelo de nuevo, debería funcionar. Puede tener Synaptic Open, o tener otra ventana de terminal abierta ejecutando apt-get, o tener el administrador de actualizaciones ejecutándose. Verifíquelo y vea si alguno de ellos se está ejecutando, si alguno ellos se están ejecutando, ciérrelo e intente nuevamente.

Pruebe este comando en la terminal para encontrar lo que se está ejecutando

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

Nota:
Si eso no imprime nada, escriba lo siguiente en la terminal para eliminar el bloqueo

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

Ahora puede instalar cualquier paquete.

karthick87
fuente
99
Eliminar el archivo de bloqueo es, lo que consideraría, algo peligroso. Si otro proceso se bloquea por una razón válida, y elimina ese archivo de bloqueo y fuerza una instalación con lo que estaba haciendo anteriormente, podría afectar seriamente, de manera negativa, a su sistema.
Marco Ceppi
55
Es por eso que lo he dicho en Note. Si todo lo anterior falla, la única forma es eliminar el bloqueo. No causará ningún problema mientras los procesos dpkg y apt-get / aptitude no se estén ejecutando
karthick87
pgrep -f 'apt|adept|dpkg'Es mucho más corto.
dhchdhd
¡Gracias! esto funciona. pgrep -f 'apt | adept | dpkg' y luego sudo skill (número), mata todos los números y luego instala los trabajos.
creador
@Barry que coincidiría con todo el proceso de ruta +. Creo que pgrep -a 'apt|adept|dpkg'es un mejor equivalente más corto.
Pablo A
46

Hasta ahora, la mejor manera de hacerlo funcionar sin romper una posible instalación en segundo plano (como podría suceder al eliminar el archivo de bloqueo), es detener el servicio usando apt:

Error:

# 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?`

Solución:

sudo systemctl stop apt-daily.timer

Después de actualizar el sistema, sugiero volver a habilitarlo, ya que el bloqueo de error podría solucionarse con la actualización.

sudo systemctl start apt-daily.timer

No he verificado que este error se solucione después de la actualización. Agregaré un nuevo comentario una vez que haya verificado

Jairelee
fuente
Después de actualizar el sistema e iniciar el servicio apt-daily.timer nuevamente, no estoy enfrentando este problema hasta ahora.
Jairelee
Este es probablemente el método más limpio en comparación con todas las respuestas más votadas arriba. Funcionó perfectamente en mi caso, ¡gracias!
CygnusX1
Esto funcionó perfectamente en 17.10 también
Elder Geek
Trabajó el 17.10 +1
Eng.Fouad
2
Trabajando bien en 18.04. :)
Naveen Kumar V
33

En primer lugar, debemos verificar qué proceso creó el archivo de bloqueo usando lsof:

sudo lsof /var/lib/dpkg/lock

o en otra situación donde /var/lib/apt/lists/lockes problemático:

sudo lsof /var/lib/apt/lists/lock

La salida estará cerca de algo como:

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

Luego deberíamos verificar qué está haciendo el comando, podemos averiguarlo usando ps, pgrepetc; el comando es apt-getasí que ejecuto:

pgrep apt-get -a

El -ainterruptor enumera el comando completo para mí, en mi caso es:

 pgrep -a apt-get
 12127 apt-get update

podemos ver que está ejecutando un updatesubcomando, yo también podría ejecutar algo como esto:

ps -f 12127

que produce:

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

En este caso, esperaría un minuto para que se liberen los recursos y si después de 2 o 3 minutos el problema persiste o si el comando era algo que no me importaba o que no era perjudicial para el sistema (como este apt-get update), envío un mensaje SIGTERMa el proceso:

sudo kill -15 12127

Debería hacer el trabajo. Si no fuera así, lo enviaré SIGINTesta vez (es como presionar CTRL+ C):

sudo kill -2 12127

Si no funcionó también, deberíamos enviar un SIGHUP( kill -1), y finalmente si nada funciona, simplemente elimino el proceso:

sudo kill -9 12127

o

sudo pkill -9 apt-get

Luego elimino los recursos ocupados:

sudo rm /var/lib/apt/lists/lock
Ravexina
fuente
Una pequeña cosa es que en /var/lib/dpkg/locklugar /var/lib/apt/lists/lockdel archivo en la pregunta.
Chai T. Rex
1
Gracias a los dioses raíz que alguien finalmente menciona pgrepy pkill.
dhchdhd
1
Esta debería ser la respuesta aceptada.
Marwan Nabil
si una instalación o actualización causó esto, también dpkg --configure -apodría ser necesario
LUXS
Esto funciona para mí
Sundeep
21

Este error puede deberse a que Update Manager intenta actualizar automáticamente la lista de paquetes en segundo plano, generalmente justo después de iniciar sesión, bloqueando así el directorio.

En este caso, solo espere unos segundos (o más, si su última actualización fue hace mucho tiempo) para que se complete o inicie Update Manager para verificar el estado.

Batsu
fuente
Tuve esto justo después de instalar Ubuntu 16.04. Resulta que hubo un proceso en segundo plano en el Centro de software de Ubuntu que estaba esperando que instale manualmente algunas actualizaciones.
jvriesem
Lo mismo después de una nueva instalación de 16.04. En mi caso, fue mucho más que "unos segundos" (¡tuve tiempo de leer toda esta página de preguntas y respuestas!), Pero después de refrescarme psvarias veces pude ver que dpkgestaba actualizando un montón de cosas y esperé pacientemente a que todo terminara . Luego ejecuté Software Updater hasta que todo estuvo actualizado antes de intentar instalar algo nuevo.
Charlie Joynt
16

Esto sucederá si tiene 'Update Manager' ejecutándose en paralelo para cualquier verificación de actualización o instalación a medida que el proceso de instalación coloca el bloqueo. Si enfrenta el mismo error sin ejecutar 'Update Manager', debe eliminarlo /var/lib/dgkg/lock, lo que definitivamente no puede hacer manualmente

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

funciona bien. Tomado de: https://askubuntu.com/a/15469/68707

Nabeel Ahmed
fuente
1
Este fue el problema en mi caso!
LondonRob
1
Mejor solución ya que el comando del fusor solía rastrear otro proceso (si aún está vivo)
Lars Nordin
16

No sea tan rápido para eliminar algo, puede dañar totalmente su sistema; más bien espere hasta que el programa de instalación o desinstalación finalice su tarea y después de eso obtendrá acceso. Si cree que actualmente no hay nada instalando o desinstalando, simplemente reinicie su sistema con el comando sudo reboot.

Wessi
fuente
1
Esto parece un comentario en lugar de una respuesta. ¿Podría mover esto como un comentario a la respuesta a la que estaba respondiendo?
jvriesem
44
@jvriesem ¡Creo que esta es una respuesta muy importante, porque lo que está haciendo es lo que falta en muchas otras respuestas!
Volker Siegel
@jvriesem Esta suele ser la respuesta correcta. Me encuentro con este problema con bastante frecuencia con mis contenedores de Linux cuando no los uso por mucho tiempo. Solo espera Sí, puede ser un rato. Pero deje que haga su trabajo antes de entrar e interrumpir las cosas.
earth2jason
Esto debería ser lo primero que debes intentar. Esta respuesta la mayoría de las veces soluciona el problema. Lo tuve tal vez 4-5 veces todavía, y un reinicio siempre lo resolvió.
enero
10

Si tiene actualizaciones de seguridad configuradas para la instalación automática, esto sucederá con frecuencia. Literalmente espero 30 segundos y soluciona el problema. Simplemente arrojando esto por si alguien más se encuentra con este problema.

Wh33t
fuente
1
Dependiendo de cuánto tiempo se haya iniciado la distribución, podría durar hasta media hora. Pero probablemente sea ideal para dejar que su distribución termine su trabajo antes de interrumpir las cosas.
earth2jason
6

En mi caso, tuve que esperar varios minutos para que se desbloqueara (parece que se aptusó para sostenerlo). Todo esto sucedió justo después del arranque del sistema.

Pavel Vlasov
fuente
4

Solo sudo rm -f /var/lib/apt/lists/locke inténtalo de nuevo.

apt-fast PUEDE ser responsable de no desbloquear adecuadamente; Esto sucede a veces cuando abortas apt-geto dpkgtambién.

ish
fuente
4

He tenido este problema en numerosas ocasiones. Para mí, casi siempre fue causado por apt-get o alguna GUI que lo llamó colgado por alguna razón. Tuve que matarlo, lo que dejó varias cerraduras en su lugar.

Las otras respuestas traen muy buenos puntos sobre asegurarse de que no se estén ejecutando actualizaciones antes de hacer algo drástico como eliminar archivos de bloqueo. Sin embargo, una vez que esté seguro de que ese no es el caso, lo siguiente generalmente funciona para mí. Lo entendí leyendo muchas respuestas a preguntas como esta.

Si bien la mayoría o todo esto se presenta en las otras respuestas, esto destila la solución a unos pocos comandos.

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

Úselo para desbloquear el sistema de paquetes después de que una actualización de algún tipo se bloquee o finalice sin finalizar de alguna otra manera. Estos comandos deben ejecutarse en el orden presentado.

Joe
fuente
3

No veo esta respuesta en ninguna parte anterior, pero en Ubuntu 16.04, también encontré este problema. La causa fue que el tiempo en mi computadora se estableció en el futuro . (Esto se debe a que estoy en un sistema de arranque dual Windows + Ubuntu y supongo que he estropeado la hora local frente a la hora UTC).

Una cosa extraña fue que la fecha y hora del archivo bloqueado era la fecha y hora exactas en que ejecuté el programa.

Luego usé "fusor" como se describe en publicaciones anteriores y apt funcionó, pero recibí quejas sobre la necesidad de ejecutar dpkg -a -reconfigure. Cuando hice eso, obtuve errores como:

newline in field name #padding

en archivos como '/ var / lib / dpkg / updates / 0003'.

Todo esto fue muy extraño ya que nunca lo había visto antes. Entonces, pensé que estos eran síntomas y cambié mis datos y mi tiempo manualmente. Sabía que había un problema con la fecha / hora cuando inicié sesión, pero lo estaba ignorando. (Anteriormente, lo configuraba automáticamente a través de Internet y NTP).

Entonces, todos los problemas anteriores se solucionaron ... ¡Esperemos que esto ayude a alguien más! El síntoma más notable es quizás la fecha / hora del archivo de bloqueo que es la fecha / hora exacta en la que está intentando ejecutar el comando.

Rayo
fuente
3

En mi caso, X se estrelló mientras apt-gettodavía estaba eliminando granos viejos. Utilicé el Monitor del sistema para confirmar que todavía se estaba ejecutando y no estaba atascado. Todo estuvo bien una vez que el proceso terminó.

wjandrea
fuente
3

Verifique el Iniciador para ver si se Software Updaterestá ejecutando. Si es así, maximícelo y eche un vistazo a lo que está haciendo. Si todavía está comprobando, espere a que se complete. Cuando se complete, podría decirle que el software está actualizado, así que cierre la aplicación. Si dice que hay actualizaciones disponibles, realice la actualización o haga clic en "recordar más tarde". Después de que esta aplicación se cierre, puede volver a usar apt-geto apt.

Si Software Updaterno se está ejecutando, simplemente use el Tablero para invocarlo y espere a que se complete y luego decida si desea actualizar o haga clic en "recordar más tarde". Después de que esta aplicación se cierre, puede volver a usar apt-geto apt.

H2ONaCl
fuente
2

En mi caso, recibí el mismo mensaje al no darme cuenta de que había cambiado a usuario root e intentaba sudo apt-get. Una vez que me di cuenta de esto, simplemente ejecuté apt-get, y funcionó. Tonto, pero aún podría explicar el error para algunos.

BluePython
fuente
2
Esa no es la causa del problema, ya que puede ejecutarse sudocomo root (e incluso si no pudiera, no produciría este mensaje de error). Lo más probable es que lo que sucedió fue que el otro proceso terminó mientras escribía el siguiente comando.
wjandrea
A veces produce el mismo mensaje de error.
karel
2
sudo killall -9 apt && sudo killall -9 dpkg

Úselo bajo su propio riesgo

Ninguno
fuente
1

en mi caso, después de:

  1. Abre Firefox
  2. Terminal abierta

escribí


sudo apt update
sudp apt upgrade
entonces tengo esos problemas

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?
Lo arreglé, ejecutando el comando que me mostraron después de ejecutar sudo apt update

apt list --upgradable

Este comando le mostrará una lista de programas en mi caso solo Firefox, cerré Firefox, luego pude ejecutar el comando nuevamente sin problemas.

sudo apt upgrade
christianbueno.1
fuente
0

Para las personas que están interesadas en prevenir de manera proactiva este error en sus scripts, descubrí que el indicador -q activado me apt upgrade -yqestaba causando este problema. Durante el proceso de actualización, supongo que ocasionalmente me daría advertencias (algo parecido a la actualización del escritorio, me gustaría continuar), y si estas advertencias se suprimieran, entonces supongo que eso hace que no se desbloqueen los archivos que estaba protegiendo. y se atascó

Es cierto que tuve problemas para reproducir este error el 100% del tiempo, pero eliminar esa opción -q solucionó por completo el problema .

Tyrel Kostyk
fuente
0

Como la mayoría de los demás, esperé a que se quitara la cerradura. Después de 30 minutos, me di por vencido y arranqué con una distribución diferente. A partir de ahí, utilicé Internet para algunas investigaciones que me llevaron aquí.

Resulta que se unattended-upgrades.serviceestá ejecutando. Descubrí que se reinicia en el sistema roto y se ejecuta:

sudo systemctl disable apt-daily.service
sudo systemctl disable unattended-upgrades.service
sudo systemctl disable apt-daily-upgrade.service
sudo systemctl disable apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer
sudo shutdown -r # Note it will take a couple minutes to reboot

me permitió hacer que el sistema roto funcionara nuevamente para:

sudo apt update
sudo apt upgrade
sudo apt install -f

Sin embargo, no solucionó los paquetes retenidos y la situación imposible reportada apten primer lugar. Parece que esto estaba causando aptque se bloqueara en el arranque en primer lugar.

WinEunuuchs2Unix
fuente