[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: libc6 upgrade problem



On 2009-09-05 12:27 +0200, Laurent CARON wrote:

> I did just upgrade some packages (one of them is libc6) on a server
> running etch.
>
> It seems (from what I can see in the backups of this server) that an
> old version of libc6 is lying in /usr/local/lib/tls (maybe a leftover
> from some previous install).

If nothing else, this serves as a warning for other people not to shadow
important system libraries by installing private version into
/usr/local/lib.

> As a matter of fact, i'm unable to run any command (a simple ls will
> give the following output: relocation error:
> /usr/local/lib/tls/libc.so.6: symbol _dl_starting_up, version
> GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time
> reference
>
>
> That's the output from apt-get after installing libc6
>
> /usr/bin/dpkg: relocation error: /usr/local/lib/tls/libc.so.6: symbol
> _dl_starting_up, version GLIBC_PRIVATE not defined in file
> ld-linux.so.2 with link time reference
> sh: relocation error: /usr/local/lib/tls/libc.so.6: symbol
> _dl_starting_up, version GLIBC_PRIVATE not defined in file
> ld-linux.so.2 with link time reference
>
>
> Questions:
> - If I reboot the server, will it simply discard the "bad" libc6
> located in /usr/local/lib ?

No.  Most likely, it will not come up because any command running after
/usr/local is mounted will fail.

> - If I empty the file (echo "" > /usr/local/lib/tls/libc.so.6) will it
> be ignored by the system upon next reboot ?

I am not sure.

> - If nothing else can be done i'll have to have the server restarted
> with a live cd.

You can set LD_LIBRARY_PATH so that the dynamic linker searches in /lib
before /usr/local/lib:

# LD_LIBRARY_PATH=/usr/lib:/lib rm -f /usr/local/lib/tls/libc.so.6

Sven


Reply to: