I have installed the PARI/gp calculator software, which I compiled
with the readline library included to facilitate editing of lines at the
console.
This morning I did an update of CentOS 6.8 x86_64, which is a "clone"
of Red Hat Enterprise Linux, minus the branding.
For that, I did:
# yum update
Now, gp complains about missing symbols.
The ldd command with options -d and -r gives the following:
$ ldd -d -r /usr/local/lib/libreadline.so.6 [ENTER ]
linux-vdso.so.1 => (0x00007ffd4207e000)
libc.so.6 => /lib64/libc.so.6 (0x00007f5aae028000)
/lib64/ld-linux-x86-64.so.2 (0x0000003afc600000)
undefined symbol: PC (/usr/local/lib/libreadline.so.6)
undefined symbol: UP (/usr/local/lib/libreadline.so.6)
undefined symbol: BC (/usr/local/lib/libreadline.so.6)
undefined symbol: tgetflag (/usr/local/lib/libreadline.so.6)
undefined symbol: tgetent (/usr/local/lib/libreadline.so.6)
undefined symbol: tputs (/usr/local/lib/libreadline.so.6)
undefined symbol: tgoto (/usr/local/lib/libreadline.so.6)
undefined symbol: tgetnum (/usr/local/lib/libreadline.so.6)
undefined symbol: tgetstr (/usr/local/lib/libreadline.so.6)
and then when I looked at the modification date I get this:
$ ls -l /usr/local/lib/libreadline.so.6 [ENTER ]
lrwxrwxrwx. 1 root root 18 Mar 20 10:54 /usr/local/lib/libreadline.so.6
-> libreadline.so.6.3
This means a change was made within the last 1 to 2 hours.
My fix for the gp readline problem is to do
a symbolic link with:
/lib64/libreadline.so.6 which has a symlink to /lib64/libreadline.so.6.0 :
$ ls -l /lib64/libreadline.so.6
lrwxrwxrwx. 1 root root 18 Feb 4 02:07 /lib64/libreadline.so.6 ->
libreadline.so.6.0
$ ls -l /lib64/libreadline.so.6.0
-rwxr-xr-x. 1 root root 272008 Jun 22 2012 /lib64/libreadline.so.6.0
===
If I run the same `ldd' command on the old library
/lib64/libreadline.so.6.0
I get the following:
$ ldd -d -r /lib64/libreadline.so.6.0 [ ENTER ]
linux-vdso.so.1 => (0x00007fffe08e3000)
libtinfo.so.5 => /lib64/libtinfo.so.5 (0x0000003b0fa00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003afce00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003afc600000)
It doesn't report any undefined symbols, which is why I
symlink to it so that `gp' will work.
I'd like to know why the Packagers continue to make
symlinks to: /usr/local/lib/libreadline.so.6.3
which here using ldd -d -r shows up as having undefined symbols,
or in the alternative (supposing I'm creating problems with
my workaround for `gp' and librealine), how
to compile or re-compile the PARI/gp source code so that
it will not interfere with what the Packagers have fixed and
got running fine.
Thanks,
David Bernier