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.
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.
Muy bueno che (como siempre), gracias!
¿Y aparte no te faltó borrar el archivo de bloqueo?
Muy buenoo el blog! sos un capo!
me hace reir mucho