On Mon, Jul 30, 2012 at 11:12:43AM +0200, Vincent Lefevre wrote: > > I do believe that whenever an initscript is called with the argument > > "start", it should bloody well start, and not exit after doing > > nothing because I haven't edited some scarcely related file > > somewhere. > > As long as scripts are allowed to execute init scripts directly with > "start" or "restart" (see rsync postinst script, for instance), this > must not be the case. Otherwise there would be no means to disable a > daemon (uninstalling the package would not be a satisfactory solution > because the client may still be useful, such as with rsync).
Package maintainer scripts are _not_ allowed to execut init.d scripts directly. They have to do it via invoke-rc.d, which obeys runlevel configurations and local policy made by the sysadmin (using the /usr/sbin/policy-rc.d interface, which is not the world's greatest one, but at least it's there). I'm writing this on a machine running squeeze, so this may be a bit different in later versions, but here's the snippet: if [ -x /etc/init.d/rsync ]; then if dpkg --compare-versions "$oldversion" lt "3.0.7-2"; then update-rc.d -f rsync remove fi update-rc.d rsync start 50 2 3 4 5 . >/dev/null if [ -x /usr/sbin/invoke-rc.d ]; then invoke-rc.d rsync restart else /etc/init.d/rsync restart fi fi This invokes the service ("runs the init.d script") with invoke-rc.d, if available. The rsync postscript should not need to check for invoke-rc.d anymore, it's been available in a required package for a long time now, but it shouldn't matter, either. -- I wrote a book: http://gtdfh.branchable.com/
signature.asc
Description: Digital signature