Hi,

On Fri, Oct 11, 2024 at 10:46:47AM +0100, Ian Jackson wrote:
> Hi.  Earlier this year I was asked [#1072021] to remove
>   Recommends: ... system-log-daemon
> from one of my packages.  There are some explanations here:
>  [0]: https://lists.debian.org/debian-devel/2024/05/msg00425.html
>       https://lists.debian.org/debian-devel/2024/05/msg00436.html
> 
> The effect of making this change is that on non-systemd systems,
> nothing pulls in a syslog daemon and no logging takes place.
> This seems wrong.

I agree that the proposed solution is less than ideal.

> Because the syslog daemon is a singleton, implementors of the virtual
> package should Conflict/Provide.  Therefore, to avoid apt trying to
> deinstall systemd, the parts of the systemd.deb that provide this
> functionality (or enable it) should be split out into a separate
> package - ie systemd should own and listen on the standard syslog
> socket iff that package is installed.  That is how multiple
> mutually-exclusive provisions of of the same facility are done in
> Debian.

As far as I understand things, this characterization is no longer
accurate. The system-log-daemon facility used to be singleton, but the
way systemd approaches it is no longer singleton. You can have:

 * No logging facility.
 * systemd-journald logging to /var/log/journal
 * A traditional system-log-daemon such as rsyslog running on sysvinit.
 * systemd-journald forwarding logs to a traditional system-log-daemon
   such as rsyslog.

The tricky part here is that journald kinda implements what packages
expect from the system-log-daemon virtual package but at the same time,
it does not conflict with other system-log-daemons due to the message
forwarding.

> This option was rejected by the MBF proposal on the grounds that
> 
> >  splitting journald or its configuration to separate packages is not
> >  an acceptable workaround, as keeping enabled it by default is the
> >  goal
> [0]

I can relate to this view in the sense that journald is tightly coupled
into systemd and that operating a systemd-as-pid-1 without journald is
not something that can be expected to work.

> This doesn't seem to make sense since packages can be installed by
> default, so it would be possible to split the package and and retain
> the intended behaviour in the default install.

In such a split, systemd-sysv would likely depend on journald and as
such exclude any other system-log-daemon, but they are meant to be able
to coexist.

> So it seems to me that there is no reason why systemd's syslog
> functionality couldn't follow Policy, use the virtual package as
> intended.  It should do so, and all changes made as a result of the
> MBF should be reverted.

systemd-journald would like to provide system-log-daemon without
excluding another system-log-daemon. Our mechanism for multiple
providers very much assumes the singleton approach that systemd would to
not follow as systemd maintainers consider coexistence of journald with
another system-log-daemon an important feature. I'm not sure what the
solution is, but the current system-log-daemon implementation doesn't
cut it.

> Perhaps there are some other reasons, why this is not feasible or
> desirable.  In that case, we should still arrange that systems which
> do *not* have systemd, still end up with a syslog daemon when
> required.
> 
> Simon McVitte had a suggestion how this might be achieved [2]
> but this was not embodied in the MBF.

Either the reference is wrong or the attribution should be Simon
Richter. The proposal is to update system-log-daemon dependencies to
"systemd-sysv | system-log-daemon" and that is something that cover the
relevant use cases of running systemd-only, sysvinit with
system-log-daemon and systemd with forwarding to a system-log-daemon. It
feels a bit annoying to have to encode systemd-sysv here, but on a
technical level, that's what we want to express here. I fear what is
required here is design work.

In principle, we could add another virtual package dev-log-socket. It
would be provided by systemd-sysv and any system-log-daemon, but without
declaring Conflicts. Then all dependencies on system-log-daemon that
merely require /dev/log to be captured into storage (which I expect most
to be) can switch their dependency to dev-log-socket.

I also feel like the problem at hand is a bit academic in nature. The
vast majority of Debian installations are running systemd as pid 1 and
journald with a persistent journal (by default). The system-log-daemon
facility is therefore available by default in the vast majority of
installations. In the container case, neither installing systemd-sysv
nor a system-log-daemon provider tends to help as no services are being
started (Simon Richter pointed this out). In the non-systemd case, an
administrator will manually install a system-log-daemon in all but
unusual situations. The ability to not install a system-log-daemon (or
systemd-sysv) even when formally required (e.g. by forwarding the
/dev/log socket from a container to an external journald process) seems
like a benefit to me as it adds flexibility while not impacting the
common case.

> In any case, Policy should be updated rather than bypassed.

I would like to agree, but Policy only mentions system-log-daemon in
virtual-package-names-list.yaml:

|  - name: system-log-daemon
|    description: a daemon that provides a logging facility for other 
applications

This description still feels accurate except that journald cannot
provide for the sake of supporting coexistence. As a result, I am not
sure what change could be effected here to resolve Ian's concern.

> On a previous occasion when I brought a matter to the TC, I was
> subjected to a sustained campaign of harassment, on the TC mailing
> list, which Debian's authorities collectively allowed to continue.
> THe harassers included full Debian members and one of the proponents
> of the present MBF.  Therefore: please do not email me any further
> about this subject, until a TC decision is made.  When Policy is
> updated, I will change my packages accordingly.  In the meantime, I'll
> adjust my mail filters to discard messages to this bug.

I see how Ian had a bad experience earlier. His refusal to interact with
opponents vaguely makes sense on those ground, but doesn't help the
matter. His refusal to interact with CTTE members removes our ability to
solicit feedback in order to resolve the matter. Therefore I suggest
that we completely turn down the request on procedural grounds: Either
he is willing to discuss the matter with us (not with systemd people) or
we cannot help resolve it.

I am intentionally not taking ownership (in the sense of our moderation
procedure) of this bug as my availability is limited during the next
weeks.

Helmut

Reply via email to