Package: runit-services
Version: 0.7.2
Severity: important
X-Debbugs-Cc: plore...@disroot.org

here is what happens:

* rsyslogd is run as a runit service
* rsyslog deb package ships a logrotate file that rotates
  log files; as postrotate action, rsyslogd is HUPped, so
  that it stops writing on rotated files and writes new files.

however recently rsyslog package removed the sysvscript and
the postrotate action is now effective only under systemd;
to counter this, orphan-sysvinit-scripts package installs a
diversion on the postorate script to restore the invoke-rc.d
call.

the problem is that none of the two works with the runit service,
so files are rotated but rsyslogd does ot receive the HUP signal
and keeps writing old (rotated) files.

the proper way would be to ask for some cooperation on rsyslog
deb package side, for example by allowing shell fragments in the
postrotate call (this way packages like runit-service and o-s-s
can just drop their shell fragment in the appropriate directory).

if that does not happens the fix gets ugly: ideally runit-services
should not conflict nor depends on orphan-sysvinit-scripts.
This is because runit is currently using initscipts as fallback for
when a native runscript is missing; on the other hand if all needed
rusncripts are available, having extra initscripts adds to the risk
to have coflicting instances of the same service.
Anyway, in case of a depends, the o-s-s diverted file need to be
adjusted to work with runit.

options left without adding conflicts/depends with o-s-s is to add
a diversion to the logrotate file itself, making sure that it does
work with runit and with sysvinit too; however this does not scale
well because other inits (openrc, s6) will be left without available
files to divert..
another option would be to ship our 'runit-rsyslog' logrotate script
in /etc/logrotate.d/ ; according to logrotate(8), "It will not modify
a log more than once in one day unless the criterion for that log  is
based on the log's size and logrotate is being run more than once each
day, or unless the -f or --force option is used."
So to override the rsyslog package tha name should be something like
'aa-runit-rsyslog'.

(see also https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071395)

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

Kernel: Linux 6.8.12-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_FIRMWARE_WORKAROUND, 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-services depends on:
ii  runit         2.1.2-60
ii  runit-helper  2.16.3

Versions of packages runit-services recommends:
ii  runit-init  2.1.2-60

Versions of packages runit-services suggests:
ii  socklog  2.1.0+repack-5.1

-- no debconf information

Reply via email to