shared/install: do not enable masked instances (#4005)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 21 Aug 2016 13:10:51 +0000 (09:10 -0400)
committerLennart Poettering <lennart@poettering.net>
Sun, 21 Aug 2016 13:10:51 +0000 (15:10 +0200)
commit047d91f9c8cf1bcf5a30f428668babd619533944
treeb393fde73a6f4d5cd1515d3a6da7d6b8369f7cb9
parent47d2d30d83eb7494593181915967be38451d72f1
shared/install: do not enable masked instances (#4005)

When told to enable a template unit, and the DefaultInstance specified in that
unit was masked, we would do this. Such a unit cannot be started or loaded, so
reporting successful enabling is misleading and unexpected.

$ systemctl mask getty@tty1
Created symlink /etc/systemd/system/getty@tty1.service → /dev/null.
$ systemctl --root=/ enable getty@tty1
(unchanged)
Failed to enable unit, unit /etc/systemd/system/getty@tty1.service is masked.

$ systemctl --root=/ enable getty@
(before)
Created symlink /etc/systemd/system/getty.target.wants/getty@tty1.service → /usr/lib/systemd/system/getty@.service.
(now)
Failed to enable unit, unit /etc/systemd/system/getty@tty1.service is masked.

The same error is emitted for enable and preset. And an error is emmited, not a
warning, so the failure to enable DefaultInstance is treated the same as if the
instance was specified on the command line. I think that this makes most sense,
for most template units.

Fixes #2513.
src/shared/install.c