Cómo corregir el error ‘E: no se pudo obtener el bloqueo /var/lib/dpkg/lock’ en Ubuntu Linux

Recientemente, estaba tratando de instalar una aplicación usando el comando apt en Ubuntu cuando encontré el siguiente error:

E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – abierto (11: Recurso temporalmente no disponible)
E: No se puede bloquear el directorio de administración (/var/lib/dpkg/), ¿lo está utilizando otro proceso?

De hecho, hay un error similar que puede ver:

E: No se pudo obtener el bloqueo /var/lib/apt/lists/lock – abierto (11: Recurso temporalmente no disponible)
E: No se puede bloquear el directorio /var/lib/apt/lists/
E: No se pudo obtener el bloqueo /var/lib/dpkg/lock – abierto (11: Recurso temporalmente no disponible)
E: No se puede bloquear el directorio de administración (/var/lib/dpkg/), ¿lo está utilizando otro proceso?

En algunos casos, es posible que lo vea mientras usa el Centro de software:

No se pudo obtener el error de bloqueo en el centro de software de Ubuntu

Estos errores son muy similares a otro error común de Ubuntu, No se puede bloquear el directorio /var/cache/apt/archives/, y lo interesante es que las correcciones también son similares.

Corrección del error “No se puede bloquear el directorio de administración (/var/lib/dpkg/)”

Ve este error porque algún otro programa está intentando actualizar Ubuntu. Cuando un comando o aplicación está actualizando el sistema o instalando un nuevo software, bloquea el archivo dpkg (administrador de paquetes de Debian ).

Este bloqueo se realiza para que dos procesos no cambien el contenido al mismo tiempo, ya que puede provocar una situación injustificada y un posible sistema roto.

Veamos qué pasos puede seguir para solucionar este problema de “no se puede bloquear el directorio de administración”.

Método 0:

Lo primero que debe hacer es verificar si algún otro programa podría estar ejecutando la actualización del sistema o instalando un programa.

Si está utilizando la línea de comandos, verifique si una aplicación como el Centro de software, el Actualizador de software, el administrador de paquetes Synaptic, Gdebi está ejecutando alguna actualización/instalación. Si ese es el caso, espere a que el programa termine el proceso de ejecución.

Si no se está ejecutando dicha aplicación, verifique todas las ventanas de terminal abiertas y vea si está ejecutando una actualización o instalando un programa. Si es así, espera a que termine.

Si no sucede nada de lo anterior, verifique qué otro proceso está ejecutando el comando apt (administrador de paquetes para el manejo de software). Usa este comando:

                      
                        ps aux | grep -i apt
                      
                    

Para mí, mostró esta salida:

                      
                        [email protected]:~$ ps aux | grep -i apt
root      1464  0.0  0.0   4624   772 ?        Ss   19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root      1484  0.0  0.0   4624  1676 ?        S    19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt      2836  0.8  0.1  96912  9432 ?        S    19:09   0:03 /usr/lib/apt/methods/http
abhishek  6172  0.0  0.0  21532  1152 pts/1    S+   19:16   0:00 grep --color=auto -i apt
                      
                    

Si ve que apt está siendo utilizado por un programa como apt.systemd.actualización diaria estás de suerte, querido lector.

Este es un demonio que se ejecuta en segundo plano y busca actualizaciones del sistema automáticamente cuando inicia su sistema.

En Ubuntu 18.04 y versiones superiores, incluso puede intentar descargar e instalar las actualizaciones de seguridad importantes por su cuenta. Al menos esto es lo que veo en la configuración predeterminada en la herramienta Software y actualizaciones en el escritorio de Ubuntu.

Ubuntu puede instalar actualizaciones de seguridad en segundo plano

Si está en un servidor Ubuntu, puede comprobar si tiene habilitadas las actualizaciones desatendidas comprobando el contenido del archivo. /etc/apt/apt.conf.d/20auto-actualizaciones .

Entonces, si ve que apt.systemd.daily está usando el proceso apt, todo lo que tiene que hacer es esperar unos minutos. Cuando finalice la actualización automática, debería poder instalar su software como de costumbre.

Como solución permanente, puede deshabilitar por completo la verificación de actualizaciones automáticas y actualizaciones desatendidas; sin embargo, no lo aconsejaré por razones de seguridad.

Ahora, ese era el escenario simple y podría manejarse fácilmente. Pero ese podría no ser siempre el caso. Si algún otro programa está usando apt, debe manejarlo de manera diferente.

Método 1:

Use la línea de comando de Linux para encontrar y eliminar el proceso en ejecución. Para hacer eso, use el siguiente comando:

                      
                        ps aux | grep -i apt
                      
                    

Esto le mostrará la identificación del proceso que se ejecuta apt o apt-get. En el example a continuación, la identificación del proceso es 7343. Puede ignorar la última línea que contiene ‘grep –color=auto’.

Puede usar la identificación del proceso para terminarlo enviando el señal SIGTERM . Reemplace con el número que obtuvo en el resultado del comando anterior.

                      
                        sudo kill <process_id>
                      
                    

Compruebe si el proceso se eliminó ejecutando ‘ps aux | comando grep -i apt’. Si aún se está ejecutando, fuerce la eliminación con la señal SIGKILL:

                      
                        sudo kill -9 <process_id>
                      
                    

Otra forma más fácil sería utilizar el Mátalos a todos mando. Esto eliminará todas las instancias de un programa en ejecución:

                      
                        sudo killall apt apt-get
                      
                    

Método 2

El método anterior solucionaría el problema en la mayoría de los casos. Pero mi caso fue un poco diferente. Estaba actualizando mi sistema y accidentalmente cerré la terminal. Por esa razón, no había procesos ejecutándose apt, pero aún así me mostraba el error.

Aconsejaría probar los dos métodos anteriores o simplemente reiniciar su sistema primero. Si nada de eso funciona, solo elija esta opción para eliminar los archivos de bloqueo.

En este caso, la causa raíz es el archivo de bloqueo. Como se mencionó anteriormente, el bloquear archivos se utilizan para evitar que dos o más procesos utilicen los mismos datos. Cuando se ejecutan los comandos apt o apt-get, crean archivos de bloqueo en algunos lugares. Si el comando apt anterior no finalizó correctamente, los archivos de bloqueo no se eliminan y, por lo tanto, evitan nuevas instancias de los comandos apt-get o apt.

Para solucionar el problema, todo lo que necesita hacer es eliminar los archivos de bloqueo. Pero antes de hacerlo, sería una buena idea detener cualquier proceso que esté usando los archivos de bloqueo.

Utilizar el comando lsof para obtener el ID de proceso del proceso que contiene los archivos de bloqueo. Verifique el error y vea de qué archivos de bloqueo se queja y obtenga la identificación de los procesos que contienen estos archivos de bloqueo.

Ejecute estos comandos uno por uno.

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

Es posible que los comandos no devuelvan nada o solo devuelvan un número. Si devuelven al menos un número, use los números y elimine los procesos de esta manera (reemplace con los números que obtuvo de los comandos anteriores):

                      
                        sudo kill -9 <process_id>
                      
                    

Ahora puede eliminar de forma segura los archivos de bloqueo usando los siguientes comandos:

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

Después de eso, reconfigure los paquetes:

                      
                        sudo dpkg --configure -a
                      
                    

Ahora si ejecutas el sudo comando de actualización apt, todo debería estar bien.

Solución de problemas 1: “No se puede adquirir el bloqueo de interfaz de dpkg”

Si ve un error como este:

                      
                        [email protected]:~$ sudo apt install grub-customizer 
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
                      
                    

Debe averiguar qué proceso está manteniendo la interfaz de bloqueo utilizando el comando lsof como se explicó en las secciones anteriores:

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

Esto es lo que me mostró:

                      
                        abhi[email protected]:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
unattende 2823 root    5uW  REG    8,2        0 145221 /var/lib/dpkg/lock-frontend
                      
                    

Si tú ves ‘ desatendido ‘ Columna COMMAND, esto significa que se están ejecutando actualizaciones de seguridad desatendidas. Debería esperar a que termine el proceso . Básicamente, esto es lo que discutí en el método 0, pero probablemente te lo saltaste.

Si el COMANDO es algo más, puede eliminar el proceso y luego eliminar el archivo de bloqueo. Puede ver la identificación del proceso en la columna PID. Use este PID para matar el proceso. Después de eso, elimine el archivo de bloqueo y ejecute el comando de actualización para ver si se solucionó.

                      
                        sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update
                      
                    

¿Qué es eso lsof: advertencia no puede stat() fuse.gvfsd-fuse sistema de archivos?

Nota: Si ve “lsof: advertencia no se puede stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
La información de salida puede estar incompleta” después de ejecutar el comando lsof mencionado anteriormente, no entre en pánico.

Eso no es un error. Es solo que lsof también intenta buscar en los sistemas de archivos montados y la advertencia es sobre esos sistemas montados.

Los archivos están bloqueados por los procesos en su sistema de archivos principal, por lo que si muestra alguna advertencia y no hay salida, esto solo significa que no hay ningún proceso que use esos archivos bloqueados.

Solución de problemas 2: “dpkg: error: la interfaz de dpkg está bloqueada por otro proceso”

Si ve el error “la interfaz de dpkg está bloqueada por otro proceso” mientras ejecuta los pasos del método 2, necesita un paso adicional.

Primero, averigüe la identificación del proceso que contiene el archivo de bloqueo.

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

El comando anterior le dará los detalles de los procesos que utilizan los archivos de bloqueo. Use la ID del proceso para matar este programa:

                      
                        sudo kill -9 PID
                      
                    

Ahora puede eliminar el bloqueo y reconfigurar dpkg:

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

¿Funcionó para ti? ¿Qué método lo arregló para usted?

Espero que este pequeño consejo te haya ayudado a solucionar el error “No se pudo obtener el bloqueo /var/lib/dpkg/lock”. En caso afirmativo, hágame saber en los comentarios qué método funcionó para usted.

Si todavía tiene problemas, hágamelo saber. Intentaré ayudarte.

Cualquier otra sugerencia también es bienvenida en los comentarios.


Related Posts