miércoles, octubre 09, 2013

Debian: Problemas al arrancar un daemon desde el postint de un paquete

Hace unos días nos encontramos un curioso problema en un paquete Debian de construcción propia: Por alguna razón que desconocíamos en ese momento ,el script postint de un paquete debian, no terminaba la ejecución, convirtiéndose en un proceso zombie, que dejaba al proceso que lo lanzó esperando indefinidamente la finalización del mismo. Como el proceso que lanza estos paquetes es el debconf, encargado de la instalación de paquetes, ésta nunca finalizaba de manera correcta.

Tras buscar bastante, dimos con el problema: hay ciertos programas que no pasan a segundo plano de manera correcta y dejan descriptores de ficheros abierto contra debconf, que es el programa encargado de realizar las instalaciones y configuraciones de paquetes en sistemas basados en Debian. Esto sólo ocurre si desde el postint intentamos arrancar algún tipo de proceso que debe ser un daemon.

Para evitar este problema, Debian provee un script, que puede llamarse desde nuestro fichero postint: Antes de terminar la ejecución del fichero postint, se debe de añadir la llamada db_stop al final del mismo (o bien en aquellos puntos donde se finalice la ejecución). De esta manera, se soluciona el problema del cuelgue de la instalación de paquetes que arrancan daemons que no cierran bien los descriptores de ficheros.


No hay comentarios: