LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   SUSE / openSUSE (https://www.linuxquestions.org/questions/suse-opensuse-60/)
-   -   Yast2 Online Update broke libraries - fix? (https://www.linuxquestions.org/questions/suse-opensuse-60/yast2-online-update-broke-libraries-fix-244517/)

greennick 10-19-2004 03:12 AM

Yast2 Online Update broke libraries - fix?
 
YaST2 Onlne Update broke my libraries! How do I fix this? I've had similar problems before and it was such a nightmare to get out of it that I'm hoping someone can help me find the simpler fix this time...

Here's the error I get and what I know:

nicholas@linux:~> ls
ls: relocation error: /lib/i686/libpthread.so.0: undefined symbol: _dl_cpuclock_offset

*where's it come from?*
nicholas@linux:~> nm -o /lib/* /lib/*/* /usr/lib/* /usr/lib/*/* /usr/local/lib/* 2> /dev/null | grep cpuclock
/lib/libpthread.so.0:0000d380 T pthread_getcpuclockid
/lib/librt.so.1:00003830 T clock_getcpuclockid
/lib/i686/libpthread.so.0: U _dl_cpuclock_offset
/lib/i686/libpthread.so.0:0000be30 T pthread_getcpuclockid
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_find_self
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_handles
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_initial_thread
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_initial_thread_bos
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_manager_thread
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_manager_thread_bos
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_manager_thread_tos
/usr/lib/libpthread.a:getcpuclockid.o: U __pthread_nonstandard_stacks
/usr/lib/libpthread.a:getcpuclockid.o:00000000 T pthread_getcpuclockid
/usr/lib/libpthread.so:0000d380 T pthread_getcpuclockid
/usr/lib/librt.a:clock_getcpuclockid.o:00000000 T clock_getcpuclockid
/usr/lib/librt.a:clock_getcpuclockid.o: U getpid
/usr/lib/librt.so:00003830 T clock_getcpuclockid

*seems like it's only in /lib/i686/libpthread.so.0, so what causes that?*
nicholas@linux:~> ldd /lib/i686/libpthread.so.0
libc.so.6 => /lib/i686/libc.so.6 (0x4001f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
nicholas@linux:~> rpm -q --whatprovides libc.so.6
glibc-2.2.5-177
nicholas@linux:~> rpm -q --whatprovides ld-linux.so.2
glibc-2.2.5-177
nicholas@linux:~> rpm -q --whatprovides libpthread.so.0
glibc-2.2.5-177

*anything changed from the package?*
nicholas@linux:~> rpm -V glibc-2.2.5-177
.......T c /etc/rpc
S.5....T /usr/bin/ldd
..5..... /usr/share/man/man8/ldconfig.8.gz

But none of that seems to have problems, hence it seems this isn't the root of the problem.


Background - what I did that started this mess:

I ran SuSE's YaST2 Online Update (YOU) tonight (took 3-4 hours, jeez), and it managed to download and install a load of updates, including glib and klib (it failed on the kernel, but I don't particularly care since I rebuilt mine earlier today) and finished up alright, but now my libraries are broken.

YOU told me to run /sbin/SuSEconfig when it was done (I did) and to run lilo if I use that (I don't; I use grub). It also alerted me that a reboot would be necessary in the event of a kernel update, but it didn't update the kernel and I'm nervous about rebooting when I've got fundamental library problems - I once got myself so stuck with bad libraries that I couldn't boot (I had to go through some long arduous process of using floppies with statically-linked versions of necessary commands so i could go about the patch job of getting rid of the new libraries and putting the old ones back).

I'm running kernel 2.6.8.1 with SuSE 8.1 on an HP Omnibook 900.

ithawtewrong 10-20-2004 10:43 AM

I would have to suggest as your first course of action to boot up with your Install CD. Select Install -> The language you use then you should have a repair option.
This should fix your issue since it's a basic command that appears to be broken.

greennick 10-20-2004 01:46 PM

Hm, that's an option, though I wonder how good the install CDs would be at repairing the libraries situation (especially considering that they'll have all the old versions, and my ultimate goal is to successfully get NEW libraries - everything seems to require glibc-2.3 these days, I've got 2.2.5).

Let me be clear, it's not one command that's broken - it's libpthread.so.0 and whatever it gets its information from, so everything that depends on libpthread fails to run (including ls, yast2, openoffice, probably lots more).

Do you think trying to manually update my glibc packages (which include libpthread and all the rest) might help, or is that suicidal? Can anyone tell me the *right* way to update my libraries without trashing my system?

- nick

greennick 10-20-2004 06:17 PM

fixed?
 
So mabe this is fixed for the moment...I tried an old trick where I redirected the library path to an old backup of my libraries to see if a command would work:

linux# export LD_LIBRARY_PATH=/libold; ls

That still didn't work even with several lib backup directories, so I used ldd and file to take a look at each of those versions of libpthread to see what they used - and all of them used the same /lib/ld-linux.so.2, whether they were in /libold or whatever. So I did a

linux# file /lib/ld-linux.so.2
(which was in the ldd dependencies list for libpthread.so.0) and saw that it linked to /lib/ld-2.2.5.so.0, as it should have.

But other versions of ld-2.2.5.so.0 still existed in my backup directories - /libold/ld-2.2.5.so.0. So I rerouted the link:

linux# ln -sf /libold/ld-2.2.5.so.0 /lib/ld-linux.so.2

...And voila! Commands worked without a hitch. Diff shows only that the two versions of ld-2.2.5.so.0 are different, but interestingly enough I found another old version of that file that I'd saved that had caused similar problems, and it was the exact same size as this new bad one. Weird.

So now I've copied things over appropriately so I'm running on the "good" backup version of ld-2.2.5.so.0 and things are alright (which is why I'm able to run mozilla to post this). But I'm suspicious - is this a permanent solution? What went wrong here and why? How do I update my libraries but prevent this mess in the future?

If you have ideas, I'm listening.


All times are GMT -5. The time now is 11:57 PM.