Public bug reported:

Expected behavior
=================

In Ubuntu 10.04, 12.04 and 14.04 after running "apt-get install
supervisor" the Supervisor daemon is automatically enabled (to start on
boot) and started (so that Supervisor is running by the time apt-get
returns).

What actually happens
=====================

In Ubuntu 16.04 the Supervisor daemon is not automatically enabled nor
is it started during installation. This breaks compatibility with
previous and expected behavior.

Why this is a problem
=====================

I've built dozens of tools that use Supervisor for process supervision
and these tools are deployed using custom Debian packages. Each of these
packages has a dependency on the supervisor package with the expectation
that Supervisor will be installed, enabled and started so that my post-
installation scripts can call "supervisorctl" and expect it to work
(instead of complaining about a missing UNIX socket file and exiting
with a nonzero status code, thereby breaking my automated server
provisioning).

Known workaround
================

Create a shim package with a dependency on supervisor and a post-
installation script that runs the following commands:

    # On Ubuntu 16.04 the installation of Supervisor does not
    # enable and start the Supervisor daemon which breaks
    # compatibility with previous Ubuntu releases.
    if [ $(lsb_release --short --codename) = xenial ]; then
      # Make sure the daemon is enabled.
      if ! systemctl --quiet is-enabled supervisor; then
        systemctl enable supervisor
      fi
      # Make sure the daemon is started.
      if ! systemctl --quiet is-active supervisor; then
        systemctl start supervisor
      fi
    fi

Alternatively one can obviously just run these commands by hand to
rectify the situation.

It's kind of nasty that I have to create a shim package like this to
compensate for a break in backwards compatibility that is -as far as I
know- undocumented and most likely unintentional. What's more is that a
lot of people will lack the means to create shim packages like this, so
thousands of Ubuntu users / integrators / system administrators
worldwide will need to repeat these shenanigans manually.

Affected versions
=================

    peter@template-xenial:~$ lsb_release --short --description
    Ubuntu 16.04 LTS

    peter@template-xenial:~$ apt-cache policy supervisor
    supervisor:
      Installed: 3.2.0-2
      Candidate: 3.2.0-2
      Version table:
     *** 3.2.0-2 500
            500 http://mirror.nl.leaseweb.net/ubuntu xenial/universe amd64 
Packages
            500 http://mirror.nl.leaseweb.net/ubuntu xenial/universe i386 
Packages
            100 /var/lib/dpkg/status

Root cause analysis
===================

In Ubuntu 16.04 Supervisor is managed by systemd however the post-
installation script is using update-rc.d and invoke-rc.d to enable and
start Supervisor. As far as I know these commands are remnants of the
old daemon management infrastructure and they don't integrate with
systemd, hence the breakage:

    peter@template-xenial:~$ cat /var/lib/dpkg/info/supervisor.postinst 
    #!/bin/sh
    set -e

    # Automatically added by dhpython:
    if which pycompile >/dev/null 2>&1; then
      pycompile -p supervisor 
    fi

    # End automatically added section
    # Automatically added by dh_installinit
    if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ]; then
      if [ -x "/etc/init.d/supervisor" ]; then
        update-rc.d supervisor defaults >/dev/null
      fi
      if [ -x "/etc/init.d/supervisor" ] || [ -e "/etc/init/supervisor.conf" ]; 
then
        invoke-rc.d supervisor start || exit $?
      fi
    fi
    # End automatically added section

Conclusion
==========

Is there a remote chance of getting this fixed in Ubuntu 16.06, maybe in
a later point release? On the one hand I get that fixing this now is a
big change compared to the original release of Ubuntu 16.04, on the
other hand I have found dozens of unsuspecting users (see below) being
bitten by this change in behavior and I haven't found a single user who
appreciated it :-).

If there is no chance of fixing this it should at least be documented in
the release notes as a known regression, because I haven't been able to
find any proper documentation about this change and I have found dozens
of people being bitten by the break in backwards compatibility.

External references
===================

Some random reports of people running into (what I believe is) this
exact issue:

Here's an upstream bug report, where nothing can be fixed:
https://github.com/Supervisor/supervisor/issues/735

Here's an unhappy user wondering how to restore expected behavior:
http://unix.stackexchange.com/questions/281774/ubuntu-server-16-04-cannot-get-supervisor-to-start-automatically

** Affects: supervisor (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: supervisor systemd xenial

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1594740

Title:
  Supervisor not enabled or started in Ubuntu 16.04 after installation

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/supervisor/+bug/1594740/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to