On Wed, 5 Dec 2001, Ron Stanonik wrote:
> I upgraded my amanda server from redhat 6.2 to redhat 7.1 and upgraded
> amanda from 2.4.1p1 to 2.4.2p2.
>
> I upgraded an amanda client to redhat 7.2 and replaced its copy of
> the amanda programs (/usr/local/libexec and /usr/local/sbin) with
> copies from the server.
>
> Afterward I got the infamous "xinetd: amanda service was deactivated ..."
> on the client during amcheck.
> ...
> But why would amandad fail to read the packet? So, I did ldd on amandad
>
> ldd /usr/local/libexec/amandad
> libm.so.6 => /lib/i686/libm.so.6 (0x40027000)
> libreadline.so.4.1 => not found
> libtermcap.so.2 => /lib/libtermcap.so.2 (0x4004a000)
> libnsl.so.1 => /lib/libnsl.so.1 (0x4004e000)
> libc.so.6 => /lib/i686/libc.so.6 (0x40064000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>
> Ah, libreadline is missing! No, it's there, but it is
> /usr/lib/libreadline.so.4.2.
>
> The question is why does amandad depend upon libreadline.so.4.1
> and not merely libreadline.so.4? Is this just some compiletime
> mistake. The other libraries are only specified to their major number.
The problem appears to be that, when libreadline was created, the shared
object name (soname) was specified as 4.1, not just 4.
gcc -shared -Wl,-soname,libreadline.so.4.1 ...
So, any application compiled to use libreadline looks for 4.1, not just 4.
Redhat 7.2 includes an rpm readline41-4.1-10.i386.rpm which provides
libreadline.so.4.1, and readline 4.2 uses the correct soname, 4.
From the readline 4.2 Changes file
q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
that the `soname' contains only the major version number rather than the
major and minor numbers.
Ron
[EMAIL PROTECTED]