How can I ensure a service is disabled on boot? [duplicate]

For some reason I need to disable a system service on boot. In my case this is the Avahi Daemon. I just don't want it to start on boot.

In previous Ubuntu releases (e.g. 12.04) I could do

sudo update-rc.d avahi-daemon disable

However on 14.04 it shows

update-rc.d: warning:  start runlevel arguments (none) do not match avahi-daemon Default-Start values (2 3 4 5)
update-rc.d: warning:  stop runlevel arguments (none) do not match avahi-daemon Default-Stop values (0 1 6)
 System start/stop links for /etc/init.d/avahi-daemon do not exist.

And Avahi is started on boot. How can I disable this? I'm looking for a command line way of doing this.

And please care to explain what happened here? Some change in a recent Ubuntu release broke the use of update-rc.d? I suspect I'm missing something here.


Solution 1:

Ubuntu uses Upstart instead of SysV Init to start services on boot. Thus some services don't have an SysV Init script but an Upstart job description file in /etc/init/ (not /etc/init.d/). For those update-rc.d doesn't work.

Use

echo manual | sudo tee /etc/init/avahi-daemon.override

to disable avahi-daemon starting at boot. Replace avahi-daemon with whatever service you like to stop.

See Upstart Intro, Cookbook and Best Practises for more about how to work with Upstart.