我在旧的 Red Hat Enterprise Linux AS 第 4 版系统上安装了 Mathematica 9。安装后,我尝试启动 Mathematica,但出现以下消息:
/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica:/lib64/tls/libc.so.6:找不到版本“GLIBC_2.4”(/需要)家/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:找不到版本“GLIBC_2.4”(/需要)家/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/Libraries/Linux-x86-64/libQtCore.so.4)
我不想更新系统glibc,因为它有风险,而且管理员不允许我这样做。
有人建议可以在其他地方安装新版本的 glibc,然后运行该程序
LD_LIBRARY_PATH=/lib/new your_application
并且这不会影响系统。
所以我在这里问一下这个方法是否真的有效。如果它有效,我想知道如何一步一步地做到这一点(我现在缺乏 Linux 经验,并希望尽快在 Linux 上使用 Mathematica)。
编辑:
我注意到有一个软件叫“Ermine”。看起来它可以将软件部署为独立的软件包,不依赖于外部环境。不幸的是,它是一个共享软件。所以我想既然“Ermine”能做到,就一定有办法在旧系统上使用新软件。
答案1
您绝对可以编译新版本的 GLIBC 并将其存储在单独的目录中。您要做的第一件事是下载您想要的 glibc 版本http://ftp.gnu.org/gnu/glibc/。
运行configure
脚本并将其设置--prefix=
为类似/home/you/mylibs
.
将其安装到该目录后,您必须将其设置LD_LIBRARY_PATH
为新 glibc 的位置。
您需要找出可能需要编译的任何依赖项。您可以创建一个 shell 脚本来设置 LD_* 变量并运行您的程序(无论如何您都必须这样做),然后重复运行它 - 一路下载/重新编译丢失的库。
您还可以使用它ldd
来确定程序需要哪些共享库,然后ldd
对每个库使用以确定它们是否需要 glibc。
这可以是一个非常耗时的过程,不适合不耐烦或胆小的人- 遍历/重新编译应用程序工作所需的可能依赖项有时可能会让您想拔掉头发。
更新1:
我下载了 glibc-2.4 并尝试在 CentOS 6 上编译它。为了configure
正常工作,我必须通过更改来更改ac
和ld
版本检查:
2.1[3-9]*)
到:
2.*)
在行4045
和文件本身4106
中configure
。我设置我的 *FLAGS 环境变量,如下所示:
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
然后执行./configure --prefix=/home/tim/masochist
。它配置正确......并且它也开始正确构建......但后来我开始遇到错误 - 主要是编译器抱怨事物被重新定义。
那时我放弃了...因为它正在成为太耗时。 ;)
答案2
将 glibc 更新到您的发行版支持的版本风险较低。它是为了处理与该日期版本的兼容性而编写的远的回来,并且(没有错误)新版本应该只是替代品。恕我直言,在一些陌生的地方安装新版本风险更大。
答案3
在这种特殊情况下,我会说不要打扰,除非您得到此共享系统管理员的帮助(和许可)。
Mathematica 可在 Windows、Mac 和 Linux 上运行,因此只需将其安装在桌面计算机上即可,无需担心影响其他人。该操作系统也更有可能比 RHEL4 更新,因此您无需进行任何更改即可安装它。