Possible Reasons and Potential Solutions for 'Unable to Lock (/var/lib/dpkg/)' Error [Ubuntu]

Soluciones para el error No se puede bloquear (/var/lib/dpkg/) en Ubuntu

Unas cuantas veces, al instalar/actualizar un paquete desde la línea de comandos (usando apt-get o apt) en Ubuntu, obtenemos este error: E: No se puede bloquear el directorio de administración (/var/lib/dpkg/). Desde el punto de vista de un principiante, es un error complejo, ya que los nuevos usuarios en su mayoría no conocen el directorio «/var/lib/dpkg/» y qué tiene que ver con la operación actual que están realizando.

Técnicamente, el sistema arroja el error en múltiples escenarios, y uno realmente debe preocuparse por cómo resuelve este problema. En este artículo discutiremos todos estos aspectos relacionados con este error y cómo puede deshacerse de él de manera segura.

No se puede bloquear (/var/lib/dpkg/): diagnóstico del problema

Siempre que encuentre este error, el primer paso debe ser leer detenidamente la descripción del error. Por lo general, contiene algunos consejos cruciales que ahorran tiempo. Como ejemplo, las siguientes capturas de pantalla muestran el comando «apt-get install» que genera errores similares.

admin-dir-error-permiso

administrador-dir-error-bloqueo

Sin embargo, si observa más de cerca, observará que el texto entre paréntesis en la primera línea y el texto después de la coma en la segunda línea son diferentes en ambos escenarios, lo que deja en claro que el error en el primer escenario tiene algo que ver. hacer con los permisos de usuario, mientras que en el segundo escenario está relacionado con que el archivo de bloqueo no esté disponible temporalmente.

Si se enfrenta a un error relacionado con los permisos (como se muestra en la primera imagen de arriba), lo más probable es que se deba a que el usuario que ejecuta el comando «apt-get» o «apt» no tiene suficientes privilegios y el comando se ejecutó sin sudo. Una vez que el comando se ejecuta con privilegios de root, el error desaparecerá.

Sin embargo, si se trata de un error relacionado con el bloqueo, entonces requiere más investigación.

¿Qué es /var/lib/dpkg/?

“/var/lib/dpkg/” se puede considerar como el directorio de trabajo para el administrador de paquetes “dpkg”, que a su vez es en realidad el motor detrás de “apt-get” (así como las herramientas “apt” y “aptitude”). . Cada vez que usa estas herramientas para instalar o eliminar software, bloquean la base de datos del paquete (al crear un archivo de «bloqueo») antes de realizar la operación real, algo que en realidad se hace al obtener el bloqueo para el archivo «/var/lib/dpkg/ ” directorio. Este paso ayuda a evitar la corrupción de datos o la interrupción de una operación en curso que está siendo realizada por algún otro proceso.

Suponiendo que haya entendido el concepto explicado anteriormente, analicemos ahora los pasos de la investigación.

Paso 1: vea si hay algún otro proceso que retenga el bloqueo

Esto ahora debería parecer bastante lógico, ¿verdad? Y para hacer esto, puedes usar la ayuda del buen viejo. ps comando y canalice su salida al grep mando para que pases menos tiempo buscando lo que quieres. Por ejemplo, aquí hay un comando que le permite encontrar si ya se está ejecutando algún proceso «apt», «apt-get» o «aptitude»:

Paso 2: espera un momento y luego actúa

Si de hecho hay un comando que ya ha adquirido el bloqueo, idealmente debería esperar a que se complete y liberar el bloqueo. Sin embargo, si el comando está tardando más del tiempo esperado y está seguro de que está atascado en algún lugar, puede continuar y eliminarlo usando el comando disponible. kill o killall comandos (más información sobre ellos aquí). Esto debería resolver el problema al que te enfrentas.

Una cosa que vale la pena mencionar aquí es que nunca se recomienda matar un proceso «dpkg» directamente, ya que puede dañar la base de datos del paquete. Hago hincapié en este punto porque ahora sabe que herramientas como «apt» y «apt-get» invocan «dpkg» internamente, por lo que es muy posible que piense en eliminar el proceso «dpkg» si lo detecta en el «ps ” salida de comando.

Terminar procesos iniciados ejecutando comandos apt, apt-get o aptitude generalmente es mucho más seguro.

Paso 3: cuando la salida del comando «ps» no ayuda

Tenga en cuenta que además de las herramientas de línea de comandos como apt y apt-get, algunas aplicaciones basadas en GUI como el Centro de software o el Administrador de actualizaciones también adquieren este bloqueo.

Nota: si obtiene el error relacionado con el bloqueo justo después de iniciar Ubuntu, es muy posible que su operación se superponga con el sondeo automático iniciado por el administrador de actualizaciones. Esperar un poco debería resolver el problema en este caso.

Volviendo a las aplicaciones basadas en GUI de las que hablábamos, otra opción útil y que ahorra tiempo es usar el fuser dominio.

Con «fuser» solo necesita saber el archivo al que se accede («/var/lib/dpkg/lock» en nuestro caso), y puede eliminar el proceso que accede a ese archivo incluso si no sabe qué proceso es. Por ejemplo:

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

Tenga en cuenta que el fuser El comando no liberará el bloqueo adquirido por el proceso que acaba de eliminar, por lo que tendrá que hacerlo manualmente:

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

Nota: «liberar el bloqueo» simplemente significa eliminar el archivo de «bloqueo» para que otros procesos puedan «adquirir el bloqueo» al volver a crearlo.

Es posible que también deba ejecutar los siguientes dos comandos:

sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock

Consejo importante: nunca elimine los archivos de bloqueo como primer paso; este debería ser solo su último recurso.

Conclusión

En general, siempre es bueno comprender la razón detrás del problema antes de seguir adelante y resolverlo. Intentar soluciones a ciegas para resolver un problema nunca lo ayudará: puede tener éxito en algunos casos, pero la mayoría de las veces se encontrará en un lío aún mayor, especialmente si el sistema operativo es Linux.

¿Alguna vez ha enfrentado el error que discutimos aquí? ¿Cómo lo solucionaste? Deja tu respuesta en los comentarios.

Experto Geek - Tu Guía en Tendencias Tecnológicas