Arreglar "No se puede bloquear el directorio de administración (/ var/lib/dpkg /)" en Ubuntu


Al usar la herramienta de administración de paquetes APT en Ubuntu Linux o sus derivados, como Linux Mint (que en realidad uso como mi sistema operativo principal para hacer el trabajo diario), es posible que haya encontrado el error: "no se puede bloquear el directorio de administración (/ var/lib/dpkg /) es otro proceso que lo usa ”en la línea de comandos.

Este error puede ser muy molesto, especialmente para los nuevos usuarios de Linux (Ubuntu) que pueden no saber exactamente la causa del error.

A continuación se muestra un ejemplo que muestra el error de archivo de bloqueo en Ubuntu 16.10:

[email protected]:~$ sudo apt install neofetch
[sudo] password for tecmint:
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?

La salida a continuación es otra posible instancia del mismo error:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/ 
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 puede resolver el error anterior en caso de que lo encuentre en el futuro? Hay varias formas de lidiar con este (s) error (s), pero en esta guía, veremos las dos formas más fáciles y probablemente las más efectivas de resolverlo.

1. Busque y elimine todos los procesos apt-get o apt

Ejecute el siguiente comando para grep junto con una canalización.

$ ps -A | grep apt

Para cada proceso apt-get o apt que pueda ver en el resultado del comando anterior, elimine cada proceso con el comando siguiente.

El ID de proceso (PID) se encuentra en la primera columna de la captura de pantalla anterior.

$ sudo kill -9 processnumber
OR
$ sudo kill -SIGKILL processnumber

Por ejemplo, en el siguiente comando, donde 9 es el número de señal para la señal SIGKILL, matará el primer proceso apto:

$ sudo kill -9 13431
OR
$ sudo kill -SIGKILL 13431

2. Eliminar los archivos de bloqueo

Un archivo de bloqueo simplemente evita el acceso a otro (s) archivo (s) o algunos datos en su sistema Linux, este concepto está presente en Windows y otros sistemas operativos también.

Una vez que ejecuta un comando apt-get o apt, se crea un archivo de bloqueo en cualquiera de estos directorios/var/lib/apt/lists /,/var/lib/dpkg/y/var/cache/apt/archives /.

Esto ayuda a evitar que el proceso apt-get o apt que ya se está ejecutando sea interrumpido por un usuario u otros procesos del sistema que necesitarían trabajar con archivos que están siendo utilizados por apt-get o apt. Cuando el proceso ha terminado de ejecutarse, el archivo de bloqueo se elimina.

Importante: en caso de que todavía exista un bloqueo en los dos directorios anteriores sin que se esté ejecutando un proceso apt-get o apt notable, esto puede significar que el proceso se detuvo por una razón u otra, por lo tanto, debe eliminar los archivos de bloqueo para poder borrar el error.

Primero ejecute el siguiente comando para eliminar el archivo de bloqueo en el directorio /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

Luego, fuerce el (los) paquete (s) a reconfigurarse así:

$ sudo dpkg --configure -a

Alternativamente, elimine los archivos de bloqueo en /var/lib/apt/lists/ y el directorio de caché como se muestra a continuación:

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

A continuación, actualice la lista de fuentes de paquetes de la siguiente manera:

$ sudo apt update
OR
$ sudo apt-get update

En conclusión, hemos analizado dos métodos importantes para lidiar con un problema común que enfrentan los usuarios de Ubuntu (y sus derivados), mientras ejecutan apt-get o apt además de los comandos aptitude.

¿Tiene otros métodos confiables para compartir destinados a lidiar con este error común? Entonces, póngase en contacto con nosotros a través del formulario de comentarios a continuación.

Además, también puede querer aprender los comandos kill, pkill y killall para terminar un proceso en Linux.