GRMLBASE/15-initsetup: provide workaround for failing rsyslog
authorMichael Prokop <mika@grml.org>
Tue, 24 Aug 2021 08:14:21 +0000 (10:14 +0200)
committerMichael Prokop <mika@grml.org>
Tue, 24 Aug 2021 08:14:21 +0000 (10:14 +0200)
Previous versions of the rsyslog package provided its rsyslog systemd
unit file as /lib/systemd/system/rsyslog.service. Starting with rsyslog
v8.2108.0-1, the file is provided as
/usr/lib/systemd/system/rsyslog.service though. This change is related
to the "dh_installsystemd: Prefer /usr/lib/systemd/ to /lib/systemd"
change from debhelper v13.4, which furthermore seems to be related to
the usrmerge situation.

Now executing `systemctl preset-all` fails though:

| # systemctl preset-all
| [...]
| Failed to preset unit, file /etc/systemd/system/syslog.service already exists and is a symlink to /lib/systemd/system/rsyslog.service.

By manually removing the /etc/systemd/system/syslog.service symlink, the
appropriate symlink (from /etc/systemd/system/syslog.service towards
/usr/lib/systemd/system/rsyslog.service) gets set up as expected again.

Reported towards Debian as #992847, but until it's fixed in the upstream
packaging, we need a workaround in our build tools.

etc/grml/fai/config/scripts/GRMLBASE/15-initsetup

index dd074ea..459e51a 100755 (executable)
@@ -23,6 +23,9 @@ systemd_setup() {
       $ROOTCMD systemctl set-default grml-boot.target || true
       ;;
     *)
+      # workaround for #992847 to workaround /lib/systemd -> /usr/lib/systemd transition
+      $ROOTCMD rm -f /etc/systemd/system/syslog.service
+
       $ROOTCMD systemctl preset-all
       $ROOTCMD systemctl set-default grml-boot.target
       ;;