opscode-cookbooks/runit — pull request #5 by wohali (2012-08-22 21:05:47+00:00)
Title: Do not symlink /etc/init.d/servicename on debian

Ubuntu has a sub-script that update-rc.d calls for runit-based services,
runit-policy-rc.d. This allows update-rc.d to handle the symlinks in
/etc/init.d as if they were LSB-compatible init scripts and correctly
resolve dependency issues without creating loops.

Debian's update-rc.d directly attempts to read the header of each file
in /etc/init.d/ via perl. Obviously this isn't going to work when the
/etc/init.d/ is a symlink to the sv binary.

At Cloudant this lead to insserv failing due to perceived service loops
between runit services and other services (such as munin-node). As a
result some packages could no longer be successfully installed and
configured after use of the runit cookbook.

Since debian runit launches runsvdir-start via inittab, which in turn
handles all service management, there is no direct need for the init.d
script. The safest solution is to avoid the symlink in /etc/init.d. The
side effect is that the 'service' command will not recognize runit
services; instead, operators will have to run 'sv
'.