how to run new software without updating GLIBC?

I installed Mathematica 9 on an old Red Hat Enterprise Linux AS release 4 system.
After the installation, I tried to start Mathematica, but following message came out:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: version `GLIBC_2.4′ not found (required by /home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: version `GLIBC_2.4′ not found (required by /home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libQtCore.so.4)

I don’t want to update the system glibc, because it’s risky and the administrator don’t allow me to do that.

Someone suggested that it is possible to just install new version of glibc somewhere else, and run the program as

LD_LIBRARY_PATH=/lib/new your_application

and this will not affect the system.

So I am asking here if this method really works. And if it works, I want to know how to do it step by step (I lack experience in Linux right now, and want to use Mathematica on Linux as soon as possible).

Edit:

I noticed that there is a software called "Ermine". It seems that it can deploy a software as standalone package which doesn’t rely on the external environment. Unfortunately, it is a shareware. So I think since "Ermine" can do it, there must be a way to use new software on old system.

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

You can definitely compile a new version of GLIBC and have it stored in a separate directory.
The first thing you’ll have to do is download the version of glibc that you want from http://ftp.gnu.org/gnu/glibc/.

Run the configure script and set the --prefix= to something like /home/you/mylibs.

After you’ve managed to install it into that directory, you’ll have to set your LD_LIBRARY_PATH to the location of the new glibc.

You’ll need to figure out any dependencies you may need to compile. You can create a shell script that sets the LD_* variables and the runs your program (which you’d have to do anyway), and run it repeatedly – download/recompiling missing libs along the way.

You could also use ldd to determine what shared libraries the program needs, then use ldd on each of the libraries to find out if they require glibc.

This can be a very time consuming process and is not for the impatient or faint of heart – traversing/recompiling your way through the possible dependencies required to make your application work may occasionally make you want to pull out your hair.

Update 1:

I downloaded glibc-2.4 and tried to compile it on CentOS 6. To get configure working properly I had to change the ac and ld version checks by changing:

2.1[3-9]*)

to:

2.*)

at lines 4045 and 4106 in the configure file itself. I set my *FLAGS environment variables like so:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

and then executed ./configure --prefix=/home/tim/masochist. It configured properly… and it began building properly too… but then I started running into errors – mostly the compiler complaining about things being redefined.

At that point I gave up… Because it was becoming too time consuming. 😉

Solution 2

Updating glibc to a version supported by your distribution is low-risk. It is written to handle compatibility with versions that date far back, and (baring bugs) a new version should just be a drop in replacement. Installing a new version in some strange place is riskier, IMHO.

Solution 3

In this particular instance I would say don’t bother, unless you have assistance (and permission) from the administrators of this shared system.

Mathematica runs on Windows, Mac and Linux so just install it on your desktop machine where you don’t have to worry about affecting others. It’s also more likely that the OS will be more recent than RHEL4 and you will therefore not have to do any contortions to install it.

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply