如何在不更新GLIBC的情况下运行新软件?


20

我在旧的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”可以做到,那么必须有一种在旧系统上使用新软件的方法。


2
会的。设置工作可能会很多(您需要安装Mathematica依赖的所有库)。我的建议是将新版本的rpm软件包安装在您家的子目录中。我将让对RH更熟悉的人写一个答案,解释如何做。
吉尔(Gilles)'所以

@吉尔斯嗨,吉尔斯,非常感谢!!!我期待着它。
user15964

在其他地方安装glibc 有风险的。
BenjiWiebe

@BenjiWiebe-您确切指的是哪种风险?
FooF

1
从超级用户交叉发布:superuser.com/questions/543249/…从那里重复我的评论:“ RHEL4已有八年历史,并且已经达到其正常支持生命周期的终点。没有其他机器可以在其上安装它?例如您的台式机。”
Burhan Ali

Answers:


10

您绝对可以编译GLIBC的新版本,并将其存储在单独的目录中。首先,您需要从http://ftp.gnu.org/gnu/glibc/下载所需的glibc版本。

运行该configure脚本文件并设定--prefix=成类似/home/you/mylibs

设法将其安装到该目录后,必须将您LD_LIBRARY_PATH的位置设置为新glibc的位置。

您需要弄清楚可能需要编译的所有依赖项。您可以创建一个Shell脚本来设置LD_ *变量并运行程序(无论如何您都必须这样做),然后重复运行它-途中下载/重新编译缺少的lib。

您还可以ldd用来确定程序需要哪些共享库,然后ldd在每个库上使用它们来查找它们是否需要glibc。

这可能是一个非常耗时的过程,而不是让您不耐烦或心烦意乱 -通过使应用程序正常工作所需的可能依赖项来遍历/重新编译您的方法,有时可能会使您不满意。

更新1:

我下载了glibc-2.4并尝试在CentOS 6上进行编译。要configure正常工作,我必须通过更改来更改acld版本检查:

2.1[3-9]*)

至:

2.*)

在线路40454106configure文件本身。我这样设置* 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。它配置正确...并且也开始正确构建...但是后来我开始遇到错误-大多数是编译器抱怨正在重新定义内容。

那时我放弃了……因为它变得太耗时了。;)


+1表示信息,尽管最后一行很重要。OP需要确定所付出的努力是否值得。
Burhan Ali

谢谢你们!好我辞职了 我认为最好还是选择Mathematica 8作为折衷方案。它适用于红帽4
user15964

@livingstaccato嗨,但是如何评论vonbrand的话:“在某个陌生的地方安装新版本的风险更大……在陌生地方的图书馆可能会被随机的东西拿走,.....”。真的有风险吗?您是否曾经尝试过答案中描述的方式?
user15964

@ user15964除非您不关注正在做的事情,root 或者您做一些奇怪的事情,例如在会话初始化脚本中更改LD_PRELOAD并锁定自己,否则这没有危险。
livingstaccato

@ user15964另外-是的-我已经在某种程度上重建了glibc。
livingstaccato

1

将glibc更新到发行版支持的版本是低风险的。这是写于手柄兼容版本的日期回来了,(霸菱错误)的新版本应该只是在更换下降。恕我直言,在陌生的地方安装新版本的风险更大。


4
但是问题是我不是管理员,我没有权限。即使获得许可,我也害怕对系统进行更改,因为那实际上不是我的计算机,而是一个集群,很多人在上面工作。顺便说一句,为什么其他地方的新版本有风险?我只需要将所需的软件链接到新的lib,而不是整个系统。
user15964

1
您可以随意安装一些随机软件包吗?系统管理策略是经过认真修订的有效时机。在陌生的地方图书馆可以通过随机的东西拾起,和熨烫出来的运行你的应用程序只(和它开始可能的过程中,涉及标准程序)可能变成很大的挑战...
vonbrand

1
@vonbrand-废话,除非我们谈论的是某些高安全性的机器(而不是例如某些共享的开发人员或测试机器/集群),在这种情况下,您确实需要对外国未经审核的软件抱有偏执狂。就随机损坏而言,更新libc(影响整个系统,可能会导致系统损坏)与从受信任的源安装隔离的应用程序完全不同(我不同意Mathematica是随机软件包)。资源枯竭当然是主管sysadmin应该解决的有效问题。
FooF

@FooF,我已经看到太多的案例,例如“行政部门最了解,让用户在没有支持的情况下按自己的意愿做”,这在该领域引起了幻想。
vonbrand

1
@vonbrand-我倾向于同意你的最后评论。但是我强烈不同意更新libc或安装众所周知的软件(不是“随机软件包”)在某种程度上是可比的(假定没有恶意的意图)。我们对环境的性质及其用户知之甚少,在这里不能发表任何明确的意见。在软件开发机器(具有许多称职用户)中,允许用户运行自己的软件可能很有意义。有时,这是非常必要的(OpenWRT和OpenEmbedded,目标嵌入式平台将从源代码构建一些构建f / w映像所需的工具)。
FooF

-3

在这种特殊情况下,除非您得到此共享系统管理员的帮助(和许可),否则我不会打扰。

Mathematica可在Windows,Mac和Linux上运行,因此只需将其安装在台式机上,就不必担心会影响其他人。该操作系统也可能比RHEL4更新,因此您无需做任何扭曲即可安装它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.