Public bug reported:
Ubuntu 24.04.4 LTS (Mate)
Installed:
systemd 255.4-1ubuntu8.14
Candidate:
systemd 255.4-1ubuntu8.16
I am unable to upgrade systemd from 255.4-1ubuntu8.14 to
255.4-1ubuntu8.16 on Ubuntu 24.04 because the package's preinst script
refuses to proceed unless the system has a fully merged /usr.
The relevant message is:
******************************************************************************
*
* The systemd package cannot be installed because this system does
* not have a merged /usr.
*
* Please install the usrmerge package to convert this system to merged-/usr.
*
******************************************************************************
However, following this advice is not possible on my system.
The corresponding usrmerge report, which contains the detailed
investigation, is:
https://bugs.launchpad.net/ubuntu/+source/usrmerge/+bug/2161273
Current system state
The system is partially merged:
/bin -> /usr/bin
/lib -> /usr/lib
/sbin (real directory)
The systemd preinst checks only whether /bin, /lib and /sbin resolve
into /usr, and aborts because /sbin is still a directory.
Why the suggested recovery path does not work
Installing usrmerge, as suggested by the systemd preinst, is impossible
because usrmerge aborts during conversion.
The detailed analysis is in bug 2161273, but the short version is:
/sbin contains several hundred packaged files;
matching files already exist under /usr/sbin;
many of those pairs are different versions of the same executable;
usrmerge therefore refuses to overwrite them and aborts.
Consequently:
systemd upgrade
requires usrmerge
usrmerge
cannot complete conversion
=> systemd cannot be upgraded
Why is this a systemd bug:
The preinst script unconditionally instructs the user to install usrmerge,
assuming that this is always a valid recovery path.
In this situation it is not.
The result is that a routine security update leaves the system
permanently unable to upgrade systemd (and therefore several dependent
packages), even though the suggested recovery procedure cannot succeed.
Either:
-systemd should detect this situation and emit a more informative diagnostic, or
-there should be a supported recovery path for partially merged systems that
cannot be converted automatically.
Additional information:
The preinst script currently performs the following logic:
/bin -> /usr/bin
/lib -> /usr/lib
/sbin -> /usr/sbin
and aborts if any of these conditions is not satisfied.
The failure occurs before unpacking the package, making normal package
repair impossible.
-------
Full output of sudo apt --fix-broken install
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Correcting dependencies... Done
The following additional packages will be installed:
systemd udev
Suggested packages:
systemd-container systemd-homed systemd-userdbd systemd-boot libtss2-rc0
The following packages will be upgraded:
systemd udev
2 upgraded, 0 newly installed, 0 to remove and 235 not upgraded.
4 not fully installed or removed.
Need to get 0 B/5,350 kB of archives.
After this operation, 4,096 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 497150 files and directories currently installed.)
Preparing to unpack .../systemd_255.4-1ubuntu8.16_amd64.deb ...
******************************************************************************
*
* The systemd package cannot be installed because this system does
* not have a merged /usr.
*
* Please install the usrmerge package to convert this system to merged-/usr.
*
* For more information please read https://wiki.debian.org/UsrMerge.
*
******************************************************************************
dpkg: error processing archive
/var/cache/apt/archives/systemd_255.4-1ubuntu8.16_amd64.deb (--unpack):
new systemd package pre-installation script subprocess returned error exit
status 1
dpkg: considering deconfiguration of systemd, which would be broken by
installation of udev ...
dpkg: yes, will deconfigure systemd (broken by udev)
Preparing to unpack .../udev_255.4-1ubuntu8.16_amd64.deb ...
De-configuring systemd (255.4-1ubuntu8.14), to allow installation of udev
(255.4-1ubuntu8.16) ...
******************************************************************************
*
* The udev package cannot be installed because this system does
* not have a merged /usr.
*
* Please install the usrmerge package to convert this system to merged-/usr.
*
* For more information please read https://wiki.debian.org/UsrMerge.
*
******************************************************************************
dpkg: error processing archive
/var/cache/apt/archives/udev_255.4-1ubuntu8.16_amd64.deb (--unpack):
new udev package pre-installation script subprocess returned error exit status
1
dpkg: warning: version 'in-favour' has bad syntax: version number does not
start with digit
Errors were encountered while processing:
/var/cache/apt/archives/systemd_255.4-1ubuntu8.16_amd64.deb
/var/cache/apt/archives/udev_255.4-1ubuntu8.16_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
** Affects: systemd (Ubuntu)
Importance: Undecided
Status: New
** Tags: systemd
** Attachment added: "dpkg-configure.log"
https://bugs.launchpad.net/bugs/2161345/+attachment/5984661/+files/dpkg-configure.log
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2161345
Title:
systemd preinst refuses upgrade on partially merged /usr system
although usrmerge cannot complete conversion
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/2161345/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs