>> The only way supported in update-rc.d to disable a service is >> update-rc.d disable > > … but not this. > > “update-rc.d disable” does *NOT* disable a service. Instead, it > sets it to “stopped in all runlevels”, which is evidently *not* > the same. > > I don’t care if “update-rc.d disable” gets changed or a new API > gets added, but this has to be fixed. > > There *absolutely* HAS to be some way to disable an init script > completely *without* insserv automatically re-enabling it on the > next package upgrade/install.
It depends what's meant by "disable". If it means "disable <daemon> from starting at boot", then "update-rc.d <daemon> disable" does what it's meant to do. If it means "disable <daemon> from starting at all", then "update-rc.d <daemon> disable" doesn't do what it's meant to do. Given that "update-rc.d <daemon> disable" changes all of the rc?.d links to "K*", it means the former. There could be a new verb, "mask", whereby "update-rc.d <daemon> mask" would prefix the rc?.d scripts with an "M" and # update-rc.d <daemon> disable # service <daemon> start # telinit 3 would ignore "/etc/rc3.d/M??daemon" and wouldn't stop "<daemon>". It feels like a lot of work for an unusual corner case.

