[TIP] Que hacer si se te bloqueó apt, dpkg, aptitude o similar

Esto es bastante común y te pasa siempre que dpkg se haya quedado esperando a que le digas que hacer y se te desconectó el SSH. Una mierda.

Como resultado, te quedás fuera de donde sea que estabas haciendo cosas, dpkg queda corriendo de fondo y marcando como bloqueados ciertos archivos en /var/cache/debconf y vos no podés ni volver a ejecutar dpkg-reconfigure, ni apt-get install, ni nada.

Escribir un post sobre algo exclusívamente relacionado con la consola de comandos de Linux es bastante conflictivo, por que ante la obligación autoimpuesta de ponerle una fotito a cada post, después no sabés que mierda poner por que no encontrás nada que haga referencia con nada y terminás poniendo una estupidez como esta.

Escribir un post sobre algo exclusívamente relacionado con la consola de comandos de Linux es bastante conflictivo, por que ante la obligación autoimpuesta de ponerle una fotito a cada post, después no sabés que mierda poner por que no encontrás nada que haga referencia con nada y terminás poniendo una estupidez como esta.

 

Hagas lo que hagas, el package-manager de tu Debian, Ubuntu, Mint o derivados, te devuelve un:

debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Recurso no disponible temporalmente, así que ni mierda, jodete.
el subproceso instalado el script post-installation devolvió el código de salida de error 1.

 

Fuser al rescate:

Fuser, que vas a encontrar en prácticamente cualquier distribución de Linux si no en todas, en /bin/fuser, es un programita bastante útil que deberías conocer. Te ayuda a identificar que proceso está accediendo a que archivo o socket.  La sintaxis del comando es bastante simple, para el caso que nos ocupa por ejemplo:

~# fuser /var/cache/debconf/config.dat

Te va a devolver:

/var/cache/debconf/config.dat    22290m

 

Lo importante ahí es el PID, el número de proceso que está accediendo al archivo y te está trabando todo, en el ejemplo es el PID 22290.

Ahora que conocés el número de proceso, podés:

  • Investigar mejor que carajo pasa ejecutando: ~# ps -p 22290
  • Investigar MUCHO mejor que carajo pasa:  ~# ps p 22290
  • Matar el susodicho que traba todo: ~# kill 22290
  • Matar al susodicho con fuego y por las malas: ~# kill -9 22290

 

O mejor, muchísimo mejor:

Como todo en Linux, siempre pensás «estaría bien que tal programa haga la tal o cual cosa» en realidad ya lo hace de antes, solo que vos no lo sabías usar, fuser tiene la capacidad de matar procesos entre otras, así que si querés resolver todo de un solo plumazo, le pasás al comando el modificador -k (ill) y listo:

~# fuser -k /var/cache/debconf/config.dat

Otra vuelta mas de rosca: Lo hacés v (ervose) e i (nteractive), para que te pregunte que hacer y te de un poco mas de información sobre el proceso en cuestión:

~# fuser -vik /var/cache/debconf/config.dat

 

… Y así sucesivamente, una vez por cada archivo que te impidiera la normal ejecución de apt-get, aptitude, dpkg, etc, que para el caso del package manager de los Debian, siempre es mas de uno.

3 comentarios

Deja una respuesta

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