[ydl-gen] installed YDL 4.1 over 3.0.1; rpm and yum broken: undefined symbols?

Bill Fink billfink at mindspring.com
Sat Aug 26 23:41:32 MDT 2006


Hi Mike,

On Fri Aug 25 2006, Michael Evans wrote:

> Apologies if this question has been answered already; I couldn't find
> anything relevant on the archives.  Yum and rpm are complaining about
> undefined symbols within libraries.
> 
> I just installed YDL 4.1 from CDs (sagitta release) to a Quicksilver
> (2002) dual 1GHz G4 tower which was happily running 3.0.1.  At
> installation I chose not to reformat drives; and to install selinux and
> firewall with ssh port open; to install everything as I had done with
> 3.0.1 long ago.  The install (more install.log | grep "error") did not
> report any problems, and display, X, smp, networking, sound, etc appear
> fine.  I have /etc/yum.conf pointing to 4.1 repositories at
> ydl.osuosl.org, but I can't get yum or rpm to run out of the box.
> 
> Here are the error messages:
> 
> [root at zero ~]# yum update
> There was a problem importing one of the Python modules
> required to run yum. The error leading to this problem was:
>  
>    /lib/libssl.so.5: undefined symbol: krb5_cc_get_principal
>  
> Please install a package which provides this module, or
> verify that the module is installed correctly.
>  
> It's possible that the above module doesn't match the
> current version of Python, which is:
> 2.4.2 (#1, Nov 10 2005, 16:51:21)
> [GCC 3.4.4 20050721 (Yellow Dog 3.4.4-2.ydl.2)]
>  
> If you cannot solve this problem yourself, please send this
> message to <yum at lists.linux.duke.edu>.
> 
> [root at zero ~]#
> 
> (Should I redirect this request there?)

The krb5_cc_get_principal symbol is defined in the krb5-libs package:

gwiz% nm /usr/lib/libkrb5.a | grep krb5_cc_get_principal
         U krb5_cc_get_principal
00000138 T krb5_cc_get_principal
         U krb5_cc_get_principal
         U krb5_cc_get_principal
         U krb5_cc_get_principal
nm: ser_eblk.o: no symbols
         U krb5_cc_get_principal

I had to use the .a library rather than the .so shared library since
the .so libraries have been stripped of the symbols.  The 'T' record
defines the symbol and the 'U' records are undefined references to the
symbol (which get resolved by the loader).

The programs such as yum actually use the shared libraries, so to find
which package contains libkrb5:

gwiz% rpm -qf /usr/lib/libkrb5.so.3.2
krb5-libs-1.3.4-6

> rpm reports a different symbol error within another library:
> 
> [root at zero ~]# rpm -q yum
> rpm: symbol lookup error: /usr/lib/libneon.so.24: undefined symbol: GSS_C_NT_HOSTBASED_SERVICE
> [root at zero ~]#

gwiz% nm /usr/lib/libgssapi_krb5.a | grep GSS_C_NT_HOSTBASED_SERVICE
00000010 G GSS_C_NT_HOSTBASED_SERVICE
00000018 G GSS_C_NT_HOSTBASED_SERVICE_X

I wasn't familiar with the 'G' symbol, but a "man nm" indicates it's
"an initialized data section for small objects".

gwiz% rpm -qf /usr/lib/libgssapi_krb5.so.2.2
krb5-libs-1.3.4-6

So this is also provided bu the krb5-libs package.  So it seems you
are missing this package for some reason.

> Both /lib/libneon.so.24 and /usr/lib/libssl.so.5 appear to have been
> installed with YDL 4.1:
> 
> [root at zero /home/mevans]# ls -lst /lib/libssl.so.5 /usr/lib/libneon.so.24
> 0 lrwxrwxrwx  1 root root 16 Aug 25 12:38 /lib/libssl.so.5 -> libssl.so.0.9.7f
> 0 lrwxrwxrwx  1 root root 17 Aug 25 12:38 /usr/lib/libneon.so.24 -> libneon.so.24.0.7

Yes, you have libneon and libssl, but iti would seem you don't have
the Kerberos libraries that they reference and require.

> Any help appreciated.  Or should I take this to the yum list at Duke?  Or 
> elsewhere?

You need to install the krb5-libs package.  But you have a slight
problem since you can't run rpm which is used to install packages.

I hope you have rpm2cpio and cpio installed on your system.  If you
do, you can install the krb5-libs package using them.  First, get the
krb5-libs-1.3.4-6.ppc.rpm (from the CDs or the YDL ftp site).  Then,
as root:

	cd /
	rpm2cpio krb5-libs-1.3.4-6.ppc.rpm | cpio -div

Then, hopefully, you should be able to run rpm again (you may also
have to run ldconfig as root first).  At this point, install krb5-libs
normally via rpm, so that the rpm database gets updated properly:

	rpm -U krb5-libs-1.3.4-6.ppc.rpm

You may have to add a "--force" option to the above command.

If you don't have rpm2cpio or cpio, you might be able to get those
binaries off another system, or as a last ditch measure I could email
them to you.

After all this, hopefully you will once again have a working rpm
and yum environment, and can do further updates just using yum.

> Thanks in advance,
> Mike Evans

						-Hope this helps

						-Bill



More information about the yellowdog-general mailing list