[Pkg-sysvinit-devel] Two line init.d scripts? Sure, that will work!
pere at hungry.com
Wed Feb 5 21:31:09 UTC 2014
The following message is a courtesy copy of an article
that has been posted to gmane.linux.debian.devel.general as well.
A few months ago I drafted an idea to rewrite init.d scripts to use a
common implementation and only specify the unique parts in the init.d
scripts themselves. That draft can be found on
<URL: http://people.skolelinux.org/pere/blog/Debian_init_d_boot_script_example_for_rsyslog.html >.
The idea is to let init.d scripts look like this:
### BEGIN INIT INFO
# Provides: daemon
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: nice daemon
# Description: Provide service to others
### END INIT INFO
Short and to the point, and in the simple case only list the path to
the daemon to start. The code to implement init.d scripts is moved to
/lib/init/init-d-script, and the redundant code spread across
/etc/init.d/ can be dropped.
A few days ago I picked up the idea again, and wrote a more complete
draft of the /lib/init/init-d-script. The code is available in the
simpler-init-scripts in the sysvinit GIT repository, available from
<URL: http://anonscm.debian.org/gitweb/?p=collab-maint/sysvinit;a=shortlog;h=refs/heads/simpler-init-scripts >.
I've tested it on a few packages, and believe the code is ready for
The main target group for this feature are the majority of packages
with init.d scripts, the ones starting a single daemon. There are
around 1000 packages in Debian with init.d scripts. Around 100 of
them start stuff using rcS.d/, and tend to be quite complex. Most of
the rest start a simple daemon and are based on different generations
of /etc/init.d/skeleton. The target for this feature is the latter
The reason I bring this up on debian-devel@ is twofold. First, I want
to gather feedback on the idea. Will it work for your package, or are
some more hooks needed? Second, I wonder where such script best would
belong. My initial idea is to put it in the initscripts package,
installed on almost all Debian systems, but I suspect sysvinit-utils
is a good place too. I plan to use the system in the initscripts
package, and am relucant to add new dependencies to it, as this would
make the new dependency a required package.
CC to pkg-sysvinit-devel at lists.alioth.debian.org, where the system is
being drafted these days.
As for the line counting in the subject, I decided to ignore commented
lines. Including those, we end up on 11 lines. :)
More information about the Pkg-sysvinit-devel