Este error ocurre con relativa frecuencia en distribuciones que utilizan el gestor de paquetes Dpkg para instalar o desinstalar software: Debian, Ubuntu y derivadas. En este artículo veremos como solucionarlo.
El error es muy similar a este otro «E: No se pudo bloquear /var/lib/apt/lists/lock – open (11 Recurso no disponible temporalmente)«, y es fácil confundirlos si no prestamos la atención suficiente. Ambos ocurren cuando realizamos tareas de instalación o des-instalación de software, la diferencia radica en que mientras uno está relacionado con Apt, el otro está relacionado con Dpkg.
El error
El error se produce al intentar instalar o des-instalar alguna aplicación. Cuando el sistema hace uso del gestor de paquetes Dpkg, y éste intenta bloquear los recursos necesarios para realizar sus tareas, se encuentra que estos ya están bloqueados y lanza el siguiente error:
E: No se pudo bloquear /var/lib/dpkg/lock - open (11 Recurso no disponible temporalmente)
E: Unable to acquire the dpkg No se pudo bloquear el directorio (/var/lib/dpkg/), ¿quizás haya algún otro proceso utilizándolo?
Es bastante habitual que ese bloqueo esté producido por algún problema en operaciones anteriores, y que en el momento de encontrarnos con el error no exista ningún proceso activo utilizando esos recursos. No obstante debemos asegurarnos de ello.
La solución
La solución es rápida y sencilla. Como hemos dicho, comenzamos comprobando si existe algún proceso activo utilizando el archivo que genera el bloqueo:
sudo fuser -v /var/lib/dpkg/lock
En caso de que haya algún proceso activo provocando el bloqueo deberemos decidir si lo dejamos terminar o si por el contrario lo matamos, mi recomendación es ser razonablemente pacientes. Si optamos por matarlo, volveremos a hacer uso del comando fuser, añadiendo dos modificadores más:
sudo fuser -vki /var/lib/dpkg/lock
Si era un proceso el causante del y este ha concluido su tarea, lo más probable es que el error ya no persista.
Si por el contrario no había proceso activo, o lo había pero decidimos matarlo, deberemos eliminar el archivo que sigue generando el bloqueo:
sudo rm /var/lib/dpkg/lock
Y con esto ya habremos terminado y podremos realizar la tarea que no pudimos inicialmente.