What's the insserv way of disabling services
Michael Biebl
mbiebl at gmail.com
Wed May 7 10:48:12 UTC 2008
2008/5/7 Kel Modderman <kel at otaku42.de>:
> Hi Michael,
>
>
> On Thursday 17 April 2008 12:27:27 Michael Biebl wrote:
> > Hi,
> >
> > I was wondering, how to correctly disable a service with insserv.
> >
> > In the old style way, one would *not* run
> > update-rc.d $service remove, because that would recreate the symlink on
> > the next package upgrade, but instead rename the symlinks from S?? to K??
> >
> > insserv -r by default removes all symlinks, so a package upgrade will
> > recreate them.
> > Renaming S?? to K?? on the other hand doesn't seem to make sense with
> > insserv, as the priorities are not fixed and maybe confuse insserv when
> > it calculates the stop priorities.
> > Besides, manually renaming the symlinks from S to K is cumbersome.
> >
> >
> > Imho insserv should have a option to disable a service completely.
> > An idea would be to store this information in a state file
> > /etc/init.d/.depend.disabled.
> >
> > insserv -D --disable would disable the service and add it to the state file
> > insserv -e --enable would enable the service and remove it from the
> > state file.
> >
> >
> > If a service is disabled,
> > insserv $service would be no-op.
> >
> >
> > What do you think?
>
> I agree with pere that an insserv specific way would probably be less useful
> than a generic interface for enabling/disabling system services.
>
> One thought i had would be a package specific for this purpose, following
> the specification drafted by Henrique M Holschuh [0,1].
>
> such a package could provide /usr/sbin/policy-rc.d which would be the interface
> for fine grained administration of per service policies. I don't know of any
> package that installs a /usr/sbin/policy-rc.d file other than the simple one
> cdeboostrap provides for chroots (exit 101).
>
That disables the init script altogether, which I didn't have in mind.
My concern are mainly the services that are run during bootup and shutdown.
Pere already posted some ideas to the d-d mailing list.
It is basically about defining an API how to disable a service (using
update-rc.d).
Remains, how to implement it: Imo it would be cleaner if we would
store the state separately and not indirectly by renaming S?? -> K??
(could be implemented the same way for plain sysv, and really, tools
like sysv-rc-conf already do something like that (see
/var/lib/sysv-rc-conf), just not in a defined way, so they doesn't
play well together with other runlevel editors).
Idea:
Let's have a file /var/lib/init
disable service:
update-rc.d disable $foo, adds $foo to /var/lib/init removes all
symlinks in /etc/rc?.d/
(with plain sysv, the runlevel information, like runlevels and
start/stop priorities is also stored)
package upgrades:
update-rc.d $foo defaults (start .. stop..) would not create any
symlinks, if $foo is in /var/lib/init
enable service:
update-rc.d enable $foo, removes $foo from /var/lib/init, runs
update-rc.d $foo $parms
case 1.) insserv, no runlevel information is necessary $parms would be
"defaults"
case 2.) plain sysv has to store the runlevel information in
/var/lib/init, $parms would be pulled from /var/lib/init.
These are rought ideas. comments welcome
Cheers,
Michael
--
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
More information about the initscripts-ng-devel
mailing list