Post by Vincent LefevrePost by Greg WooledgePost by Greg Wooledge* Drop /etc/sysctl.d/99-sysctl.conf symlink procps no longer ships
/etc/sysctl.conf (Closes: #1076190)
The systemd change was only done because of the procps change. After
the procps maintainer REMOVED the /etc/sysctl.conf file, the symlink
provided by the systemd package was dangling/broken. So the systemd
maintainer removed the symlink.
No, the /etc/sysctl.conf file has not been removed (yet) for
existing installations.
If the goal were to fix the dangling symlink for new installations,
then the solution should have been to no longer generate the
/etc/sysctl.d/99-sysctl.conf symlink for new installations (and
for existing installations, possibly remove it *only* if it was
dangling).
It looks accidental to me that systemd did that tidying up before
procps had attempted to remove the file that it (procps) owned.
Post by Vincent LefevrePost by Greg WooledgePost by Greg WooledgePost by Greg WooledgeAs it turns out, it's a combination of the two packages. In bookworm,
/etc/sysctl.conf is a Conffile of the procps package, and
/etc/sysctl.d/99-sysctl.conf is a regular file (non-Conffile) of
the systemd package.
That symlink was suggested as legacy support for reading the conf file
over a decade ago. Bullseye's man 8 sysctl indicates it still reads
/etc/sysctl.conf with its --system option, but bookworm lacks that
manpage, and instead its man 5 sysctl.d lists only files residing
in …/sysctl.d/ directories as being read; hence the legacy symlink.
Post by Vincent LefevrePost by Greg WooledgePost by Greg WooledgeWhat does a regular file make different compared to a conffile
concerning its handling?
A conffile is user-managed, so any changes you make to a conffile must
be respected by the package. It can't just overwrite your changes, or
restore a conffile if you've deleted it.
This is rather poor design, because
* there isn't a way to say that some default setting must be
preserved;
There is: just add an empty comment line. Now you own that default.
Post by Vincent Lefevre* changes by a user must be respected by the package, but a package
may decide that such a file is no longer read!
As I said, I think that happened by accident rather than design,
a consequence of refactorising two packages with two maintainers.
Post by Vincent LefevreA better design could be to provide Debian / vendor defaults (which
may change) by some kind of include mechanism. This is more or less
what fail2ban does, with .conf files and .local files (the .conf
files are not meant to be changed by the user, so that /usr/lib
might be a better place than /etc).
Um, isn't that what systemd provides as a matter of routine?
SYSCTL.D(5) sysctl.d SYSCTL.D(5)
NAME
sysctl.d - Configure kernel parameters at boot
SYNOPSIS
/etc/sysctl.d/*.conf ← sysadmin's configuration overrides
/run/sysctl.d/*.conf ← ephemeral overrides
/usr/local/lib/sysctl.d/*.conf ← local package's overrides
/usr/lib/sysctl.d/*.conf ← Debian/systemd's default configuration
Post by Vincent LefevrePost by Greg WooledgePost by Greg WooledgePost by Greg WooledgeIn unstable, apparently, *both* of them are gone.
No, /etc/sysctl.conf is not gone on existing installations.
It is just no longer read.
It's... not? Then what the hell does the procps change text mean?
Post by Greg WooledgePost by Greg Wooledgeprocps (2:4.0.4-5) unstable; urgency=medium
* Add Recommends: linux-sysctl-defaults Closes: #1074156
* Remove /etc/sysctl.conf as using /etc/sysctl.d/*.conf is better
* Updated /etc/sysctld.d/README
That sure sounds like it's removed, to me.
The changelog is just wrong... or actually the intended behavior
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1076352
But just removing the file is against the policy!
But two things:
. This [Policy] manual cannot and does not prohibit every
possible bug or undesirable behaviour.
. The Release Team can, at their discretion, downgrade
a Policy requirement to a Policy recommendation for
a given release of the Debian distribution.
and, of course, unstable is never released.
Post by Vincent LefevreStill, it must be
removed because systemd's decision to remove the symlink was done
based on the assumption that /etc/sysctl.conf no longer exists.
IMHO, the best solution would be to propose to move it into
"/etc/sysctld.d".
Post by Greg WooledgePost by Greg Wooledgeonly for *new* installations.
Well... it's a conffile. If you made any changes to it, then the package
can't just remove it during an upgrade.
I don't think it would break Policy for a new empty configuration
file to be supplied. You would of course be warned and allowed to
keep your old version in the usual manner, even though it would
become impotent after the upgrade.
Post by Vincent LefevrePost by Greg WooledgeI'm not sure what would happen to an unmodified /etc/sysctl.conf file
during an upgrade. This isn't a common situation.
It gets blown away: "Obsolete configuration files without local
changes should be removed by the package during upgrade."
Post by Vincent LefevreOn some of my machines (installed quite recently), I hadn't modified
this file, and it wasn't removed.
Between bookworm and trixie, the migration issue for a modified
/etc/sysctl.conf file will have had to be sorted out. Perhaps it will
migrate it for you, presumably as 99-… so that it sorts in the same
way as now. AIUI your bug report should assist in that process, but
unstable is for finding these snags when packages are split, merged,
or otherwise refactorised.
Cheers,
David.