Tabla de Contenidos
Instalación de daemontools
# solo está probado con la versión 0.76, pero es más fácil modificarlo si está así
export DTVERSION=0.76
# bajo el paquete
mkdir -pv ${HOME}/soft
cd ${HOME}/soft
wget http://cr.yp.to/daemontools/daemontools-${DTVERSION}.tar.gz
# bajo el patch para procesar las señales QUIT/USR1/USR2
wget http://thedjbway.b0llix.net/patches/daemontools-${DTVERSION}.sigq12.patch
# creo el /package si no existe
sudo mkdir -pv /package
sudo chmod -v 1755 /package
# abro el paquete
cd /package
sudo tar xvzf ${HOME}/soft/daemontools-${DTVERSION}.tar.gz
cd admin/daemontools-${DTVERSION}
# aplico (opcionalmente) el patch para procesar las señales QUIT/USR1/USR2
sudo patch -p1 < ${HOME}/soft/daemontools-${DTVERSION}.sigq12.patch
# modifico error.h para que compile con los glibc nuevos
sudo sed -i.ORI -es/^extern\ int\ errno\;/#include\ \<errno.h\>/ src/error.h
# compilo e instalo
sudo package/installEsto creó un directorio /service donde se pueden symlinkear directorios de servicios para monitorear.
Además agregó una línea al /etc/inittab que (al menos en Linux con inittab) es así:
SV:123456:respawn:/command/svscanboot
en ubuntu nuevo con upstart -y sospecho que en cualquier caso que no encuentre un /etc/inittab) agregó una línea en /etc/rc.local
csh -cf '/command/svscanboot &'
en el caso específico de ubuntu hardy, el /etc/rc.local tiene un exit 0 antes de esta línea, con lo cual nunca se ejecuta, lo recomendable es configurar el svscan en el upstart.
OJO
: una de los side-effects de esto en ubuntu es que el /etc/rc.local deja de ser ejecutable. En general este archivo no se usa, pero por si hay algo que realmente se tiene que ejecutar allí, por si acaso hay que hacer:
sudo chmod +x /etc/rc.local
En general está bueno instalar también tai64nfrac
Sistemas con Upstart
Esto debería ser todo. Sin embargo, en los Ubuntu más nuevos, que usan upstart esto no arranca porque el último paso modificó el /etc/inittab que en upstart es irrelevante...
Saqué info de http://www.phragmunkee.com/2006/12/28/ubuntu-610-edgy-eft-experience/ y de http://fxp0.org.ua/2007/apr/21/svscanboot-and-upstart-ubuntu-feisty/ para arreglar esto:
sudo sh -c 'cat > /etc/event.d/svscan' <<EOF # svscan # djb daemontools # start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /command/svscanboot EOF # levanto el servicio sudo start svscan
Solaris y Ultrix
En Solaris y en Digital, la línea del /etc/inittab queda igual que en Linux... pero (al menos en Solaris 7 y 8 y en el Digital del server1 de la ACE) no anda. Hay que editarla y dejarla así:
SV:123456:respawn:/command/svscanboot </dev/null
luego correr el comando init q para que relea la inittab
Según DJB se trata de un moco del /bin/sh de Solaris.
En Solaris, al hacer package/install podría dar el siguiente error:
./makelib byte.a byte_chr.o byte_copy.o byte_cr.o byte_diff.o \
byte_rchr.o fmt_uint.o fmt_uint0.o fmt_ulong.o scan_ulong.o str_chr.o \
str_diff.o str_len.o str_start.o
./makelib: ar: not founden ese caso hay que agregar /usr/ccs/bin en el PATH.
man pages
export DTVERSION=0.76
# bajo las manpages
cd ${HOME}/soft
wget http://smarden.org/pape/djb/manpages/daemontools-${DTVERSION}-man.tar.gz
tar xvzf daemontools-${DTVERSION}-man.tar.gz
cd daemontools-man
gzip *.8
sudo cp *.8.gz /usr/share/man/man8
tai64nfrac
Un programita muy simple que permite convertir los labels que genera multilog a un epoch de unix (segundos desde las 00:00:00 del 1/1/1970) es el tai64nfrac de Russ Allbery. Para instalarlo:
export T64NFVERSION=1.4
# bajo el paquete
cd ${HOME}/soft
wget http://archives.eyrie.org/software/system/tai64nfrac-${T64NFVERSION}.tar.gz
# lo abro
tar xvfz tai64nfrac-${T64NFVERSION}.tar.gz
cd tai64nfrac-${T64NFVERSION}
# compilo
make
# instalo
sudo make install
.