Subject: Re: bug#723: init-system-helpers: update-rc.d calls systemctl on a SysVinit system, creating a recursion

From: Mark Hindley <[email-masked]>
Date: Mon, 14 Nov 2022 10:24:39 +0000

Wolfgang,

On Sun, Nov 13, 2022 at 10:00:05PM +0100, Wolfgang Wegner wrote:
> > > I am trying to install a package which expects SystemD. I manually added
> > > scripts and an initial set for sysVinit. However, the post-install script
> > > calls "systemctl --no-reload enable <packagename>", which invokes
> > > update-rc.d, which in turn diverts to a systemctl call, and so on.
> > 
> > Which of the available systemctl emulations do you have installed?
> 
> Sorry I am not sure what exactly you mean here. I try to list packages that
> might be relevant:
> 
> ii  init-system-helpers          1.65.2devuan1 all          helper tools for all init systems
> ii  initscripts                  3.05-6devuan1 all          scripts for initializing and shutting down the system
> ii  orphan-sysvinit-scripts      0.11          all          Orphaned System-V-like init scripts
> ii  sysvinit                     3.05-6devuan1 amd64        System-V-like init utilities - transitional package
> ii  sysvinit-core                3.05-6devuan1 amd64        System-V-like init
> ii  sysvinit-utils               3.05-6devuan1 amd64        System-V-like utilities
> ii  systemctl-service-shim 0.0.4-1      all          Adds systemctl translator script
> ii  dummy-systemd-dev   0.2          all          Development files extracted from systemd
> 
> "systemctl-service-shim" might be what you are asking for, but I did not see
> any alternative?

Yes, that what what I meant. There is also a Debian systemctl package, but it is
not really maintained and I wouldn't recommend it.

I notice you have dummy-systemd-dev installed. You really don't want that on a
production system. If is a hack for building sources that Build-Dep: systemd. It
doesn't provide any systemd functionality.

If you remove it does it make any difference?

> > > Calling update-rc.d from the systemctl "abstraction" (surrogate?) seems
> > > to be correct, but I would have expected update-rc.d to detect the system's
> > > init system and - as I am using sysVinit on Devuan - just modify the links.
> > > 
> > > update-rc.d behaviour can also be reproduced when calling it for an already
> > > installed service.
> > 
> > Could you give a specific example here. I can't reproduce it.
> 
> root@<host>:~# update-rc.d rsyslog enable
> update-rc.d rsyslog enable
> update-rc.d rsyslog enable
> update-rc.d rsyslog enable

Hmmm, I get completely different behaviour with that command:-

mark@apollo:~% sudo update-rc.d enable rsyslog
usage: update-rc.d [-f] <basename> remove
       update-rc.d [-f] <basename> defaults
       update-rc.d [-f] <basename> defaults-disabled
       update-rc.d <basename> disable|enable [S|2|3|4|5]
                -f: force

The disable|enable API is not stable and might change in the future.

What systemd-requiring package are you trying to install? What other changes
have you made?

Mark