The daemontools package is a replacement for inetd or xinetd. The main reason for using it here is because it is recommended for use with qmail and djbdns.
Download (HTTP): http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
Download (FTP): ftp://incal.net/pub/net/daemontools-0.76.tar.gz
Download size: 162 KB
Estimated Disk space required: 1.8 MB
Estimated build time:
Install daemontools by running the following commands:
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 |
The first thing to understand in installing any package written by Daniel J. Bernstein, and this includes qmail, djbdns and ucspi-tcp in addition to daemontools, is that he is willing to completely disregard standards if his idea of the correct thing to do differs from an particular standard. Professor Bernstein is a standards body unto himself when it comes to his own software.
It is therefore necessary to make quite a few changes to the installation commands for his packages to get them to install in a manner that is compliant with the Filesystem Hierarchy Standard (FHS). Most of the following commands are due to this difficulty.
cd admin/daemontools-0.76: First off, the package is unpacked in an admin directory. You will find the actual packages two directory levels below this.
package/compile: This command actually compiles the source and prepares the binaries.
Since we are installing the binaries in /usr/sbin rather than creating a non-standard /command directory, several paths have to be changed:
sed 's|command|usr/sbin|' boot.inittab > boot.inittab~ mv boot.inittab~ boot.inittab |
In boot.inittab, /command/svscanboot is changed to /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~ && |
Here various paths are adjusted in the svscanboot script. In our setup svscan will check the /etc/service directory instead of the /service directory for daemons to run.
cp * /usr/sbin: We must manually copy the binaries to the /usr/sbin directory.
cat /etc/inittab boot.inittab > /etc/inittab~ mv -f /etc/inittab~ /etc/inittab |
mkdir /etc/service: This command creates the daemontools control directory, which - even if empty - needs to exist for daemontools to run properly.
telinit Q: This command tells the init process to re-read its configuration file (inittab) and act upon any changes that have been made. The svscanboot script is started.
The daemontools package contains svscanboot, svscan, supervise, svc, svok, svstat, fghack, pgrphack, readproctitle, multilog, tai64n, tai64nlocal, setuidgid, envuidgid, envdir, softlimit and setlock. More detailed descriptions of these commands may be found at http://cr.yp.to/daemontools.html.
svscan checks the service directory for daemons to run and starts a supervise process for each run script that it finds.
supervise runs the run script passed to it by svscan and monitors the process the script starts so that if it dies, supervise restarts it.
multilog is a logging program. It takes output from a daemon and appends it to any number of logs.