Técnicamente, el error es lanzado por el sistema en múltiples escenarios, y uno debería tener cuidado de cómo resuelve este problema. En este artículo discutiremos todos estos aspectos relacionados con este error y cómo puede deshacerse de él con seguridad.
No se puede bloquear (/var/lib/dpkg/) – diagnosticar el problema
Siempre que encuentre este error, el primer paso debe ser leer cuidadosamente 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» con errores similares.
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 claro que el error en el primer escenario tiene algo que ver con los permisos de usuario, mientras que en el segundo escenario está relacionado con el hecho de que el archivo de bloqueo no esté temporalmente disponible.
Si se enfrenta a un error relacionado con el permiso (como se muestra en la primera imagen de arriba), es muy probable que sea porque 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 desaparece.
Sin embargo, si se trata de un error relacionado con el bloqueo, es necesario seguir investigando.
¿Qué es /var/lib/dpkg/?
«/var/lib/dpkg/» puede considerarse como el directorio de trabajo del gestor de paquetes «dpkg», que a su vez es el motor detrás de «apt-get» (así como de las herramientas «apt» y «aptitude»). Siempre que se utilizan estas herramientas para instalar o eliminar software, bloquean la base de datos de paquetes (creando un archivo de bloqueo) antes de realizar la operación real, algo que se hace consiguiendo el bloqueo para el directorio «/var/lib/dpkg/». 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.
Asumiendo que usted ha entendido el concepto explicado anteriormente, ahora vamos a discutir los pasos de la investigación.
Paso 1: Compruebe si hay algún otro proceso que retenga la cerradura
Esto debería parecer bastante lógico, ¿no? Y para hacer esto, puedes usar la ayuda del viejo comando ps y canalizar su salida al comando grep para que pases menos tiempo buscando lo que quieres. Por ejemplo, aquí hay un comando que le permite encontrar si algún proceso «apt», «apt-get» o «aptitude» ya se está ejecutando:
ps aux | grep apt
Paso 2: Espere un rato y luego tome medidas
Si hay un comando que ya ha adquirido el bloqueo, lo ideal es que espere a que se complete y libere el bloqueo. Sin embargo, si el comando tarda más de lo esperado y estás seguro de que está atascado en algún sitio, puedes seguir adelante y matarlo usando los comandos kill o killall disponibles (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 – puede corromper la base de datos de paquetes. Subrayo este punto porque ahora sabes que herramientas como «apt» y «apt-get» invocan «dpkg» internamente, así que es muy posible que pienses en matar el proceso «dpkg» si lo ves en la salida de comandos «ps».
Los procesos de matanza iniciados al ejecutar comandos apt, apt-get o aptitude generalmente son mucho más seguros.
Paso 3: Cuando la salida de 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 Software Center o el Update Manager también adquieren este bloqueo.
Nota : si está obteniendo el error relacionado con el bloqueo justo después de haber arrancado en Ubuntu, es muy posible que su operación se traslape con el sondeo automático iniciado por el update-manager. 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 comando fusor.
Con «fuser» sólo necesitas saber a qué fichero se accede («/var/lib/dpkg/lock» en nuestro caso), y puedes matar el proceso de acceso a ese fichero aunque no sepas de qué proceso se trata. Por ejemplo:
sudo fusor -cuk /var/lib/dpkg/lock
Ten en cuenta que el comando fusor no liberará el bloqueo adquirido por el proceso que acabas de matar, así que tendrás que hacerlo manualmente:
sudo rm -f /var/lib/dpkg/lock
Nota : a » liberar el bloqueo » simplemente significa borrar el archivo «lock» para que otros procesos puedan » adquirir el bloqueo » recreándolo.
También es posible que necesite ejecutar los dos comandos siguientes:
sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Consejo importante : nunca borres archivos de bloqueo como primer paso – este debería ser tu último recurso.
Conclusión
En general, siempre es bueno entender la razón detrás del problema antes de seguir adelante y resolverlo. Intentar a ciegas soluciones para resolver un problema nunca le ayudará – puede que tenga é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 resolviste? Deje su respuesta en los comentarios.