Redhat Linux /lib/libc.so.6: version `GLIBC_2.16' not found (required by /lib/libncurses.so.5)

1

I am running a server RHEL 6.4 which currently has GLIBC 2.12 installed on it. We are trying to run a program which gives this error

/lib/libc.so.6: version `GLIBC_2.16' not found (required by /lib/libncurses.so.5)

I can't updgrade through a repo since the Server is not connected to Internet.

The last person did a work around in which he took the libc.so.6 file from a GLIBC_2.16 and changed the link in the /lib file, it seemed to work correctly,

But I am unable to find the libc.so.6 file for GLIBC_2.16

Any ideas where I can find the file without competely upgrading the system wide GLIBC.

If not any work arounds to make that app use the new GLIBC.

Junaid388

Posted 2015-01-19T19:14:34.317

Reputation: 35

Answers

0

EDIT: I assume you're using a normal i386 compatible processor.
How did you end up in having ncurses from a new system?
Anyway, here is what you asked for, you can take it from: http://launchpadlibrarian.net/123667354/libc6_2.16-0ubuntu6_i386.deb (launchpad) By extracting the package (for example on Windows using 7zip) and taking libc.so.6 out of it. (in lib/i386-linux-gnu/) For amd64 you just need to adapt it. However do NOT install this package by overwriting! Just use libc.so.6 if that was the workaround, else your server is most likely screwed up. Even though it's from another distribution this normally works.

In case you are on Linux and you don't want to reboot or whatever, here is a way to unpack it on Linux.

# mkdir libc
# cd libc
# ar x ../libc6_2.16-0ubuntu6_i386.deb 
# tar xzf data.tar.gz

now you should have a directory with all .so files in the libc6 package.

Oh, and be careful, libc.so.6 is actually a link to libc-2.16.so here so you want to copy libc-2.16.so and not libc.so.6

The19thFighter

Posted 2015-01-19T19:14:34.317

Reputation: 16

The Server is a a RHEL 6.4 running x86_64. And the the ncurses are for a netezza CLI Cleint.

Would it be better if we update the glibc to 2.16 or latest version? If so how can we do it without an internet connection of access to redhat repos.

And is it backward compatible and won't cause issue with existing installations. – Junaid388 – 2015-01-19T20:16:24.833

Then you should be fine with this package: http://launchpadlibrarian.net/121445924/libc6_2.16-0ubuntu3_amd64.deb

– The19thFighter – 2015-01-19T20:17:38.303

Upgrading glibc shouldn't be an issue. – The19thFighter – 2015-01-19T20:22:40.490

Since I don't have yum, How can I upgrade glibc without while resolving dependencies ??

New to Linux Administation :/ – Junaid388 – 2015-01-19T20:36:01.177

http://www.rpm.org/max-rpm/s1-rpm-install-performing-install.html You can use rpm -i package.rpm to install a package. However I never used a rpm based distro, so I can't assure it's perfect. https://access.redhat.com/downloads on the right you should be able to search for packages, if you own a RedHat account. I think you could download the newest glibc there. If this doesn't work https://access.redhat.com/solutions/10154 You can then install the downloaded rpm, by transferring it to the server. rpm should check dependencies. – The19thFighter – 2015-01-19T20:41:55.113

I just looked around seems 2.12 is the actual stable for 6.4 You could still upgrade (by downloading for example 2.17 from el7) but I wouldn't suggest to do so, as this could have negative effects on the stability. Never change a running system, unless really needed. – The19thFighter – 2015-01-19T21:34:18.093

The problem is that the client we need requires a 2.16, I think what has happened in that the sysadmin before me installed ncurses complied with glibc 2.16 and now we are being forced to run this, Either I downgrade all the dependencies or I upgrade the current one. – Junaid388 – 2015-01-19T22:18:20.360

I would suggest do downgrade the current ncurses to a version which is using an older version of glibc, but be careful, it could be that exactly this version is needed by your program, which could be the reason why the sys-admin installed it at all. If that's the case, you would need to recompile the current version of ncurses to work with glibc 2.12. Just check if the old ncurses works with your program. If not you can still revert it back(if you have the pkg). Upgrading glibc is probably the most dangerous thing you can do, and if something should go wrong, it will be a pain to fix that. – The19thFighter – 2015-01-19T22:59:24.490

How Can I recomplie the current version of ncurses.

I checked the ISO for REDhat and it has the following version are installed from the Redhat Media glibc.x86_64 - 2.12-1.107.el6 ncurses.x86_64 - 5.7-3.20090208.el6

If they are both installed from same media why aren't they compatible with the version of glibc – Junaid388 – 2015-01-20T08:30:16.997

Are you sure no one has overwritten ncurses? Also it could be that not a native version of ncurses gets used and instead one bundled with your software. Using ldd with the path to the exe (your software) should clear things up, or if that doesn't work, use LD_DEBUG=libs as environment variable then >> the output into a file, and check where ncurses got loaded from. – The19thFighter – 2015-01-20T15:39:19.813

I checked and the ncurses are being loaded from the proper lib path , I even tried reinstalling glibc and ncurses first but still getting the same error :/

Anyway I can check if there is a library that is dependent on ncurses to run, like ncurses requires glibc to run. – Junaid388 – 2015-01-22T14:54:04.843

My Bad, someone had manually placed the so file in the lib folder, and manually created the softlink, deleted the softlink, deleted so file, reinstall ncurses, Ran like a charm – Junaid388 – 2015-01-22T21:42:03.403