Bug#1108193: apt: Ordering issue with libc6:i386 on amd64-m-a system breaks partial upgrade ("just apt and dpkg") from bookworm to trixie
Aurelien Jarno
aurel32 at debian.org
Tue Jul 15 13:23:24 BST 2025
Hi,
On 2025-07-12 15:03, Helmut Grohne wrote:
> Hello,
>
> On Wed, Jun 25, 2025 at 03:13:23PM +0200, Helmut Grohne wrote:
> > I talked to Aurelien on IRC. This mail gives some context and summarizes
> > our discussion.
>
> I worked out and tested a patch somewhat and I also talked to Paul and
> Ivo. Summarizing results here.
>
> > The other side is what I discussed with Aurelien and much of what
> > follows is due to him (thank you). systemd needs to be restarted when
> > upgrading libc6, because it uses nss modules. Failing to do so results
> > in e.g. #993821. The way to restart systemd has changed over time. For
> > instance, restarting user managers and other daemons such as resolved
> > has become a thing. Due to these changes, the responsibility of
> > restarting was eventually transferred to systemd via means of a dpkg
> > trigger (see #1074607) and the Breaks ensures that systemd can handle
> > the trigger. The Breaks declaration shall ensure that systemd ends up
> > being restarted, but what also does is require that systemd.postinst is
> > run before libc6.postinst. We observe that we do not expect to bump the
> > Breaks version in forky as it is an artifact of transitioning to dpkg
> > triggers, so in later dist-upgrades the cycle at hand is expected to
> > disappear. If we are trying to relax it, we'd have to re-add code for
> > restarting systemd to libc6.postinst:
> >
> > if the installed systemd does not support triggers; then
> > # Expect a bookworm systemd:
> > # * If it were older, we'd be doing a skip upgrade.
> > # * If it is newer (e.g. backports), it supports triggers.
> > restart systemd the bookworm way
> > # https://sources.debian.org/src/systemd/252.36-1~deb12u1/debian/systemd.postinst/#L77
> > fi
> >
> > I note that this is the code that Aurelien spent effort on to get
> > removed from libc6 and moved into glibc. He expressed that he does not
> > like this approach (for obvious reasons).
>
> I have prepared patch for glibc that drops the Breaks and adds he init
> script. Tests performed:
> * https://debusine.debian.net/debian/developers/work-request/103866/
> * Attempted to reproduce the problem with Breaks dropped, but I could
> not reproduce it then. apt would simply upgrade libc6 earlier and not
> do stupid things.
> * Upgraded just libc6 in a VM (not container) and observed that systemd
> would properly be restarted when expected.
>
> I hope that others agree with this level of testing striking a good
> balance on effort and risk.
>
> Talking to the release team, Ivo and Paul were not super happy with the
> maintainer script changes due to the risk involved in added code. They
> pointed out that the lack of that addition would result in a risk of
> people doing a partial upgrade (i.e. libc6, but not systemd) would not
> get their systemd restarted. According to them, the scenario is quite
> unlikely in a release upgrade and that people should not be doing
> partial upgrades. If systemd is upgraded, it restarts itself. If libc
> happens to be upgraded after systemd has done this restart, the trigger
> added in trixie still will work. The one case the Breaks help is when
> you upgrade libc6 but not systemd. Therefore, they suggested merely
> dropping the Breaks without adding to the maintainer script.
>
> I am fine either way. Dropping the breaks is what makes package
> installation no longer fail.
>
> Aurelien, are you happy with doing an upload with or without maintainer
> script changes?
>
> Release team, can you vaguely pre-approve the attached patch with or
> without maintainer script changes?
Thanks Helmut for working on that. The patch looks good to me, and I
would definitely prefer to include the maintainer script changes, in
order to avoid bugs and mails during the lifetime of trixie. I have
looked at the patch, and it's essentially the code that was there up to
2.38-13, limited to systemd restart and with #1074607 fixed, so the
risks are quite low.
I plan to submit an unblock pre-approval with this change with an update
to the latest upstream stable branch (only small changes to the test
infrastructure and sparc32). Please shout quickly if you disagree.
Regards
Aurelien
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
aurelien at aurel32.net http://aurel32.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20250715/29379db1/attachment.sig>
More information about the Pkg-systemd-maintainers
mailing list