Más Allá de Linux From Scratch: Versión 5.0 | ||
---|---|---|
Anterior | Capítulo 21. Utilidades de D.J. Bernstein | Siguiente |
El paquete daemontools es un sustituto para inetd o xinetd. La razón principal para utilizarlo aquí es porque se recomienda usarlo con qmail y djbdns.
Descarga (HTTP): http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Descarga (FTP): ftp://ftp.lug.udel.edu/pub/network/mail/qmail/daemontools-0.76.tar.gz
Tamaño del paquete: 36 KB
Estimación del espacio necesario en disco: 1.8 MB
Tiempo estimado de construcción: 0.05 SBU
Instala daemontools ejecutando los siguientes comandos:
cd admin/daemontools-0.76 && patch -Np1 -i ../../daemontools-0.76-errno.patch && package/compile && cd package && sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ && mv boot.inittab~ boot.inittab && cd ../command && sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \ -e 's|command|usr/sbin|' \ -e 's|/service|/etc/service|g' svscanboot > svscanboot~ && mv svscanboot~ svscanboot && chmod 555 svscanboot && cp * /usr/sbin && cd ../package && cat /etc/inittab boot.inittab > /etc/inittab~ && mv -f /etc/inittab~ /etc/inittab && mkdir /etc/service && telinit Q |
El paquete daemontools no viene con páginas de manual, así que instala este paquete si quieres ayuda en línea con los programas de daemontools:
tar xzvf daemontools-0.76-man.tar.gz && cp daemontools-man/*.8 /usr/share/man/man8 |
Lo primero que hay que entender al instalar cualquier paquete escrito por Daniel J. Bernstein, y esto incluye qmail, djbdns y ucspi-tcp aparte de daemontools, es que incumple los estándares si su idea de hacer bien las cosas difiere de un estándar en particular. El profesor Bernstein es un estándar por sí mismo en lo que a su software se refiere.
Esto implica que es necesario hacer algunos cambios en los comandos de instalación de sus paquetes para poder instalarlos de forma que cumplan el Estándar de la Jerarquía del Sistema de Ficheros (FHS). Muchos de los siguientes comandos se deben a este hecho.
cd admin/daemontools-0.76 : Primero, el paquete se desempaqueta en un directorio admin. Encontrarás el paquete en sí dos directorios por debajo de este.
package/compile : Este comando compila las fuentes y prepara los binarios.
Como vamos a instalar los binarios en /usr/sbin en lugar de crear un directorio /command que no es estándar, debemos cambiar varias rutas:
sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ mv boot.inittab~ boot.inittab |
En boot.inittab, cambiamos /command/svscanboot por /usr/sbin/svscanboot.
sed -e 's|/command:/usr/local/bin:/usr/local/sbin:||' \ -e 's|command|usr/sbin|' \ -e 's|/service|/etc/service|g' svscanboot > svscanboot~ && |
Esto cambia varias rutas en el guión svscanboot. En nuestra configuración svscan comprobará en el directorio /etc/service los demonios a lanzar, en lugar de usar /service.
cp * /usr/sbin : Debemos copiar manualmente los binarios al directorio /usr/sbin.
cat /etc/inittab boot.inittab > /etc/inittab~ mv -f /etc/inittab~ /etc/inittab |
Estos comandos añaden una línea en /etc/inittab para que init lance el guión svscanboot.
mkdir /etc/service : Este comando crea el directorio de control de daemontools, que es necesario que exista aunque esté vacío, para que daemontools funcione correctamente.
telinit Q : Este comando le dice al proceso init que lea de nuevo su fichero de configuración (inittab) y actúe en consecuencia según los cambios que se hayan producido. Se ejecuta el guión svscanboot.
El paquete daemontools contiene svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimit y setlock. Una descripción más detallada de estos comandos puede encontrarse en http://cr.yp.to/daemontools.html.
svscanboot es un guión simple que llama a svscan y dirige su salida a readproctitle.
svscan comprueba en el directorio service los demonios a lanzar e inicia un proceso supervise para cada guión encontrado.
supervise lanza los guiones de inicio que le pasa svscan y monitoriza el proceso que inicia el guión, de modo que si este muere, supervise lo reinicia.
svc envía señales a los procesos iniciados por supervise.
svok comprueba si supervise se está ejecutando en el directorio que se le indica.
svstat imprime el estado de los procesos monitorizados por supervise.
fghack evita que los procesos pasen a segundo plano.
pgrphack lanza un proceso en un grupo de procesos separado.
readproctitle muestra las entradas de registro en la salida de ps.
multilog es un programa de registro de eventos. Toma la salida de un demonio y la añade a cualquier número de registros.
tai64n es un programa de generación de marcas de tiempo (timestamps).
tai64nlocal convierte la salida de tai64n a un formato legible por humanos.
setuidgid lanza un programa con los UID y GID de la cuenta indicada.
envuidgid realiza la misma función que setuidgid, pero establece las variables de entorno UID y GID igual a los UID y GID de la cuenta especificada.
envdir lanza un programa con las variables de entorno especificadas por los ficheros de un directorio.
softlimit permite establecer límites de recursos para un programa.
setlock bloquea un fichero y lanza un programa.