En algunas ocasiones, al intentar actualizar el sistema GNU/Linux Debian o simplemente al intentar realizar alguna tarea con los paquetes (actualizar/instalar/eliminar) se obtiene un mensaje de error similar al siguiente: No se pudo bloquear /var/lib/dpkg/lock* – open (11: Recurso no disponible temporalmente). Este error es sumamente sencillo de arreglar y no es necesario reiniciar el equipo ni hacer cosas raras.
Seguid leyendo y os enseñaré a solucionar el problema del famoso del "No se pudo bloquear /var/lib/dpkg/lock"
¿QUÉ ES DPKG?
El programa dpkg (abreviatura de Debian Package) es la base del sistema de gestión de paquetes de la distribución Debian GNU/Linux. Dpkg fue originalmente creado por Matt Welsh, Carl Streeter e Ian Murduck y escrito en Perl. Posteriormente el programa fue reescrito en C por Ian Jackson en 1993.
Dpkg se utiliza para instalar, quitar, y proporcionar información sobre los paquetes .deb de Debian y distribuciones GNU/Linux derivadas. Dpkg es una herramienta de bajo nivel, por lo que es necesario utilizar un programa de alto nivel para traer los paquetes desde lugares remotos o resolver conflictos complejos en las dependencias de paquetes.
DPKG es una herramienta muy potente
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con una distribución basada en Debian
2.- DETECTAR EL PROBLEMA
Para detectar el problema es tan sencillo como intentar actualizar el sistema entero o intentar instalar / desinstalar / actualizar cualquier paquete. En el siguiente ejemplo se puede ver como se intenta actualizar el sistema y el proceso dpkg está bloqueado, creando un fichero de bloqueo llamado (en este caso) lock-frontend. Recordad que hay que ejecutar los comandos como root o con un usuario con permisos de sudo:
raul@debian:~$ sudo apt-get upgrade
E: No se pudo bloquear /var/lib/dpkg/lock-frontend - open (11: Recurso no disponible temporalmente)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
3.- ARREGLAR EL PROBLEMA
Para arreglar el problema ejecutaremos el siguiente comando seguido de la ruta completa al fichero de bloqueo. Una vez ejecutado, se devolverá un número de proceso o PID:
raul@debian:~$ sudo fuser -v /var/lib/dpkg/lock-frontend
USER PID ACCESS COMMAND
/var/lib/dpkg/lock-frontend:
root 1437 F.... apt-get
Ahora hay que "matar" o detener el proceso con el PID obtenido en el paso anterior:
raul@debian:~$ sudo kill -9 1437
Si volvemos a ejecutar el comando "fuser", veremos que ya no se nos devuelve ningún proceso bloqueado:
raul@debian:~$ sudo fuser -v /var/lib/dpkg/lock-frontend
raul@debian:~$
Ahora ya puedes actualizar, instalar, borrar o lo que necesites con los paquetes de tu equipo.
ENJOY!