Bug 2368116

Summary: Unification of /usr/sbin and /usr/bin blocked by ldconfig and iconvconfig
Product: [Fedora] Fedora Reporter: Kyeong Ro Lee <kyeongro>
Component: glibcAssignee: Carlos O'Donell <codonell>
Status: CLOSED CANTFIX QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 42CC: arjun, codonell, dj, fberat, fweimer, gregory.lee.bartholomew, jlaw, josmyers, mcermak, mcoufal, mfabian, pfrankli, rocketraman, sipoyare, skolosov, suraj.ghimire7
Target Milestone: ---Keywords: Upgrades
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: glibc-2.41-6.fc42 Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-07-11 13:10:10 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Kyeong Ro Lee 2025-05-22 22:40:08 UTC
In fedora 42, /usr/sbin becomes a symbolic link to /usr/bin and an upgrade from an older release is supposed to do the merge as long as all the files in /usr/sbin are symlinks.
I had several binaries in /usr/sbin that blocked the merge, but most of the packages providing them have been fixed or are being worked on.
Now I have two regular files that seem problematic: ldconfig and iconvconfig, both from glibc.
One interesting thing:

  $ rpm -ql glibc

does not contain /usr/sbin/ldconfig anymore, but with

  $ rpm -qf /usr/sbin/ldconfig

I get "glibc-2.41-5.fc42.x86_64". I tried

  $ /usr/sbin/ldconfig --version

and surprisingly it is from glibc 2.40, i.e. f41! It seems this old binary wasn't properly removed during the upgrade for some reason. I suspect
https://src.fedoraproject.org/rpms/glibc/blob/f42/f/glibc.spec#_363
might be one reason, which was added in f38 (https://src.fedoraproject.org/rpms/glibc/c/936bce9f4a226fc37c7865e89544f79105b435d3?branch=rawhide) as a bugfix (see https://bugzilla.redhat.com/show_bug.cgi?id=2188550).
Now iconvconfig; with

  $ rpm -qf /usr/sbin/iconvconfig

I get "file /usr/sbin/iconvconfig is not owned by any package". Just like ldconfig,

  $ /usr/sbin/iconvconfig --version

shows that it is also from glibc 2.40, from the old f41 installation. I have checked that /usr/bin/ldconfig and /usr/bin/iconvconfig are indeed from glibc 2.41.

I believe the old files should have been automatically removed during the release upgrade process or any glibc update (I think there was at least one after the f42 release) that followed, otherwise it would certainly block the /usr/sbin and /usr/bin merge.

Reproducible: Always

Steps to Reproduce:
1. Upgrade from Fedora 41 to Fedora 42
2. Update the glibc package if available
Actual Results:
/usr/sbin/iconvconfig and /usr/sbin/ldconfig from glibc 2.40 (Fedora 41) are not removed.

Expected Results:
/usr/sbin/iconvconfig and /usr/sbin/ldconfig from glibc 2.40 are automatically removed during the upgrade or update process.

Comment 1 Carlos O'Donell 2025-05-30 13:34:13 UTC
Thank you for the report!

We've been reviewing two MRs for this issue:
https://src.fedoraproject.org/rpms/glibc/pull-request/145
https://src.fedoraproject.org/rpms/glibc/pull-request/144

We have just merged PR 144 and started a Fedora 42 build to solve this issue.

Fedora Rawhide should follow on after that.

Comment 2 Florian Weimer 2025-07-11 13:10:10 UTC
This could not be implemented because of the impact on rpm-ostree. I think we need manual or tool-supported cleanup for this. The change attempt to Fedorar 42 has been reverted.

Comment 3 Raman Gupta 2025-07-29 17:42:57 UTC
I had this issue as well. The manual fix is to delete the offending files and reinstall glibc:

rm /usr/sbin/ldconfig
rm /usr/sbin/iconvconfig
dnf reinstall glibc

The reinstall step will recreate the files as the correct symlinks.