Strange ssh / openldap linking problem
Michael Schwendt
mschwendt at gmail.com
Mon Apr 22 09:27:42 UTC 2013
On Mon, 22 Apr 2013 09:36:34 +0100, Richard W.M. Jones wrote:
>
> I'm not sure whether or not this is a bug, but it sure looks strange.
>
> $ rpm -qf /usr/bin/ssh
> openssh-clients-6.1p1-6.fc18.x86_64
>
> $ ldd /usr/bin/ssh|grep ldap
> libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fad274fc000)
>
> /usr/lib64/libldap-2.4.so.2 is a symbolic link to a symbolic link
> which passes through a -devel package.
>
> /usr/lib64/libldap-2.4.so.2 -> libldap.so # openldap-2.4.34-1.fc18
> /usr/lib64/libldap.so -> libldap-2.4.so.2.9.0 # openldap-devel-2.4.34-1.fc18
> /usr/lib64/libldap-2.4.so.2.9.0 is a real file # openldap-2.4.34-1.fc18
>
> To cut a long story short, I fixed this by uninstalling openldap-devel
> and reinstalling it. Now there is no -devel package in the chain:
>
> $ ldd /usr/bin/ssh | grep ldap
> libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007fe8caf69000)
>
> /lib64/libldap-2.4.so.2 -> libldap-2.4.so.2.9.0
>
> I'd like to understand how the original situation happened, because it
> broke a supermin-built appliance (RHBZ#954185). I assume ldconfig
> must have something to do with it. There is nothing unusual in the
> %scripts of openldap (it just runs ldconfig as you'd expect), nor is
> there any special openssh/openldap config file in /etc/ld.so.conf.d.
Some thoughts:
1) ldconfig does not touch the non-versioned .so libs (especially not if
they are development-only symlinks), since it only cares about the
run-time libs. It adjusts the SONAME -> FULLY-VERSIONED-LIBNAME symlinks,
so .so.2 will point at the latest .so.2.x.y, for example. It would not
recreate a deleted .so symlink and would not redirect it either.
2) The openldap-devel package contains a (harmless) bug, since it runs
ldconfig in its scriptlets. It doesn't need to.
3) Funny things going on (f19 here), but haven't examined anything
beyond this:
# rpm -e openldap-devel
# ldconfig -v|grep ldap
libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.9.1
libldap-2.4.so.2 -> libldap-2.4.so.2.9.1
# yum -y install openldap-devel
# ldconfig -v|grep ldap
libldap_r-2.4.so.2 -> libldap_r.so
libldap-2.4.so.2 -> libldap.so
That makes no sense.
In /lib64 it looks different (and correct), however:
# ls -la /lib64/*ldap*
lrwxrwxrwx. 1 root root 20 Apr 17 22:30 /lib64/libldap-2.4.so.2 -> libldap-2.4.so.2.9.1
-rwxr-xr-x. 1 root root 336504 Apr 15 10:56 /lib64/libldap-2.4.so.2.9.1
lrwxrwxrwx. 1 root root 22 Apr 17 22:30 /lib64/libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.9.1
-rwxr-xr-x. 1 root root 358720 Apr 15 10:56 /lib64/libldap_r-2.4.so.2.9.1
lrwxrwxrwx. 1 root root 22 Apr 22 11:18 /lib64/libldap_r.so -> libldap_r-2.4.so.2.9.1
lrwxrwxrwx. 1 root root 20 Apr 22 11:18 /lib64/libldap.so -> libldap-2.4.so.2.9.1
-rwxr-xr-x. 1 root root 45896 Apr 10 16:52 /lib64/libsmbldap.so.0
--
Fedora release 19 (Schrödinger’s Cat) - Linux 3.9.0-0.rc7.git3.1.fc19.x86_64
loadavg: 0.27 0.17 0.26
More information about the devel
mailing list