No se pudo bloquear /var/lib/dpkg/lock – open (11: Recurso no disponible temporalmente)

Recientemente, durante una instalación se “colgó” el proceso, el caso es que tuve que abortar a lo bestia, así que volví a lanzar la instalación y me lanzó el siguiente mensaje.

E: No se pudo bloquear /var/lib/dpkg/lock - open (11: Recurso
no disponible temporalmente)
E: No se pudo bloquear el directorio de administración (/var/lib/dpkg/),
¿quizás haya algún otro proceso utilizándolo?

Devolviéndome al prompt y no pudiendo continuar. Este problema puede ocasionar que se nos queden paquetes corruptos en el sistema y no podamos hacer actualizaciones o instalaciones nuevas. Tras “googlear” una rato y revisar el man de Ubuntu 12.04, encontré el comando fuser, que nos permite ver los llamados archivos abiertos y matar el proceso que los mantiene ocupados.

Desde un terminar ejecutamos el siguiente comando para desbloquear /var/lib/dpkg/lock.

$ sudo fuser -vki  /var/lib/dpkg/lock

Las opciones utilizadas en el comando sirven para:

  • -v activa el modo verbose, para los que nos gusta ver en todo momento lo que está haciendo.
  • -k mata el proceso que mantiene el fichero ocupado.
  • -i pide confirmación para matar al proceso.

También recomiendan eliminar el fichero en cuestión.

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

Una vez terminado con el bloqueo, ejecutamos el siguiente comando para reparar los posibles paquetes rotos.

$ sudo dpkg --configure -a

Terminado este último paso, ya podemos volver a instalar. Acaba la instalación ejecutamos el siguiente comando para eliminar paquetes que ya no sirvan o se hayan quedado “colgando” y listo.

$ sudo apt-get autoremove

Ya podemos reiniciar después de la instalación y continuar sin problemas. Deciros también que ésta misma solución se puede utilizar cuando nos encontramos con el mismo problema en la apt cache lock.

Espero que os sirva de ayuda, au!!

Fuente: askubuntu.com

29 comentarios en “No se pudo bloquear /var/lib/dpkg/lock – open (11: Recurso no disponible temporalmente)

  1. Excelente, nunca había escuchado o visto ese comando, súper útil! Lo voy a investigar. Gracias! Nunca experimenté el problema en Ubuntu, sí en Lubuntu.

  2. Gracias!!!!!
    No me funcionaba porque copiaba el comando con este símbolo: $, al no ponerlo me funciono bien. Soy nueva usando ubuntu, espero aprender mas.
    Gracias nuevamente

      • Me encanta ver que a todos les ha servido… menos a mi.. Por todo lo que has dicho, he pasado ya pero no me funciona…. ¡Ya no se que hacer!

        • Para completar la llamada anterior, te expongo:
          E: se encontró una imagen linux: /boot/vmlinz-3.13.0-29-generic
          E. Se encontro una imagen linux: /boot/vmlinuz-3.10.0-24-generic
          E. Se encontrouna imagen initrid /boot/initrid.img-3.13.0-24-gemeric
          error:no se puede leer «/deb/sdb»: error de entrada/salida
          ———————————————–
          Jolin, a ver si puedes ayudarme… no estoy muy ducho en esta materia…please

          • Hola Emilio,
            Veamos que se puede hacer, parece que no esté montado el dispositivo /dev/sdb, comprueba eso, pero si es el disco del sistema puede ser que tengas algún problema. ¿En que punto te aparecen el error?

  3. no me funciona ningun comando de esos, ejecuto los comando y no pasa nada y aun no puedo instalar ningún programa o actualizar, el error q me aparece es este installArchives() failed: dpkg: error: parsing file ‘/var/lib/dpkg/available’ near line 0:
    field name `../../../../../share/pyshared/xdiagnose/utils/option_handler.py’ must be followed by colon

    • Hola Samuel,
      El error que muestras es diferente al del post, por lo visto tienes el archivo /var/lib/dpkg/available dañado.
      Prueba lo siguiente:
      Mueve el archivo dañado

      sudo mv /var/lib/dpkg/available /var/lib/dpkg/available.bak

      A continuación utiliza uno antiguo que encontrarás en la misma ubicación,

      sudo cp /var/lib/dpkg/available-old /var/lib/dpkg/available

      .
      Si esto no te funciona, deberás volver a crear el archivo.

      sudo rm /var/lib/dpkg/available 
      sudo sudo touch /var/lib/dpkg/available  
      sudo sh -c 'for i in /var/lib/apt/lists/*_Packages; do dpkg --merge-avail "$i"; done'

      Ya me dices.

  4. Hola buenas

    Muchas gracias por el aporte. Me solucionó el problema, pero solo temporalmente. Ejecuto los comandos que indicas cuando surge el error y se resuelve. Instalo correctamente los paquetes que tenga entre manos y todo bien. Pero luego intento instalar otros paquetes o programas y me pasa lo mismo. Hago otra vez la operación y luego otra vez, y otra vez, y otra vez… ¿Sabes cómo puedo solucionarlo?

    ¡Gracias de antemano!

    • Hola Eduardo,
      Veamos, debería funcionar con las instrucciones del post, pero por si acaso, prueba a eliminar el siguiente archivo: sudo rm /var/lib/apt/lists/lock y vuelve a ejecutar el dpkg, ya nos cuentas.

      Un saludo.

  5. hago todo lo que decis aqui paso a paso el problema es que estaba actalizando adobe flash player ….
    el tema es que usando el comando sudo dpkg — configure -a vuelve a quedar como si descargara o actualizara el programa volviendo todo a bloquearse…
    podrias ayudarme? es la unica pagina que tiene una ayuda que me saco parte del problema

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

* Copy This Password *

* Type Or Paste Password Here *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>