Package: runit
Version: 2.1.2-59
Severity: normal

Dear Maintainer,

Some package call invoke-rc.d for theirs functions. For example, anacron
have
installed /etc/cron.d/anacron which uses `/usr/sbin/invoke-rc.d anacron
start'
on non-systemd systems. And on non-systemd systems, `invoke-rc.d script
action'
is translated to `/etc/init.d/script action'. For example:

$ sudo sh -x /usr/sbin/invoke-rc.d anacron start
# skipped many lines
+ /etc/init.d/anacron start
+ exit 0

Some package actually call `/etc/init.d/script action' directly. For
example,
stunnel4 have installed /etc/logrotate.d/stunnel4 which calls
`/etc/init.d/stunnel4 reopen-logs'. (Although there is no native runit
service
for stunnel4 in Debian currently.)

On systems using runit as init, due to /lib/lsb/init-functions.d/40-runit,
`/etc/init.d/script action' is a no-op by default if there is a
corresponding
native runit service. This will breaks the functions of those packages. For
example:

$ sudo sh -x /etc/init.d/anacron start
# skipped many lines
+ [ ! -e /etc/runit/lsb.runit.mask ]
+ [ -d /etc/sv/anacron ]
+ [ -d /usr/share/runit/sv.current/anacron ]
+ [ -h /etc/service/anacron ]
+ [ -z  ]
+ [ -e /usr/share/runit/meta/anacron/installed ]
+ [ -e /etc/sv/anacron/.meta/bin ]
+ [ -e /usr/share/runit/sv.current/anacron/.meta/bin ]
+ exit 0

Maybe `invoke-rc.d script action' and `/etc/init.d/script action' should be
forwarded to the corresponding native runit service to fix this bug.

By the way, it is mentioned in the header of
/lib/lsb/init-functions.d/40-runit
that if /etc/runit/lsb.runit.forward is set, `/etc/init.d/script action'
will be
forwarded to sv "if /etc/sv/<service> exists and is enabled". However I do
not see this is implemented in the current version of 40-runit.invoke-rc.d

And another note. The orphan-sysvinit-scripts package have installed
/lib/rsyslog/rsyslog-rotate which calls `invoke-rc.d rsyslog rotate' on
non-systemd
systems. As there is no such rotate action in sv, the rotate action will be
forwarded to /etc/init.d/rsyslog, but that will not work if the native runit
service of rsyslog is running. After looked into /etc/init.d/rsyslog, I
find that
`/etc/init.d/rsyslog rotate' is the same as `sv hup rsyslog' and `sv reload
rsyslog'.
Maybe assists from the Maintainer of the orphan-sysvinit-scripts package is
needed
to make the lograte for rsyslog functional in runit-init systems.

Regards,
Jun MO

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.7.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US:en
Shell: /bin/sh linked to /usr/bin/dash
Init: runit (via /run/runit.stopit)
LSM: AppArmor: enabled

Versions of packages runit depends on:
ii  libc6           2.38-11
ii  runit-helper    2.16.2
ii  sysuser-helper  1.3.9+really1.4.3

Versions of packages runit recommends:
ii  runit-init  2.1.2-59

Versions of packages runit suggests:
ii  runit-services  0.7.2
pn  socklog         <none>
pn  ucspi-unix      <none>
ii  zsh             5.9-6+b1

-- Configuration Files:
/etc/runit/1 changed [not included]
/etc/runit/2 changed [not included]
/etc/runit/3 changed [not included]

-- no debconf information

Reply via email to