Bug#1108193: apt: Ordering issue with libc6:i386 on amd64-m-a system breaks partial upgrade ("just apt and dpkg") from bookworm to trixie

Emilio Pozuelo Monfort <[email protected]>
Newsgroups gmane.linux.debian.apt.devel
Message-ID <5252e8eb-748f-4336-8650-f0c34f15e424__38489.4527074479$1752591207$gmane$org@debian.org>
On 15/07/2025 14:23, Aurelien Jarno wrote:
> 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.

Please go ahead.

Cheers,
Emilio
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.