Latest tree broke rpm?

Jakub Jelinek jakub at redhat.com
Wed May 5 21:55:18 UTC 2004


> When this is printed, this means /sbin/ldconfig surely had to be run
> successfully.

Actually, I found out what's going on.
If you are unlucky and /sbin/ldconfig run in glibc_post_upgrade (from
glibc's %post) is the last /sbin/ldconfig run during the update,
then at the point when that /sbin/ldconfig is run, files from both
new glibc and old glibc might still exist in the filesystem.
Particularly there might be still /lib/tls/librtkaio-2.3.3.so
(from glibc-2.3.3-20 or earlier) and /lib/tls/librt-2.3.3.so (from
glibc-2.3.3-24 (well, -21 or later, the rpm currently being installed)).
The libraries have the same SONAME (that's because they provide the same
ABI, librt.so.1) but different filename (librtkaio uses kernel aio,
librt is pure userland implementation).
Unfortunately librtkaio is the one picked by ldconfig, so librt.so.1
stays pointing to librtkaio-2.3.3.so.  Some time after glibc %post ends
rpm removes /lib/tls/librtkaio-2.3.3.so (as it is present just in the old
package) and there is a stale symlink.

If you are lucky and some other package's %post runs ldconfig after the
librtkaio-2.3.3.so file is removed (or if you are upgrading already
from glibc which did not have that file), everything is fine.

Guess I'll need to add some more ugly hacks into glibc_post_upgrade :(.

FYI, librtkaio has been removed for FC2, because 2.6.x kernel AIO support
is in a bad shape and insufficient for POSIX AIO on top of it.

	Jakub





More information about the fedora-devel-list mailing list