RHEL 6 - 如何安装 'GLIBC_2.14' 或 'GLIBC_2.15'?

25

我需要在RHEL 6 linux系统上安装这两个软件包。它们是其他几个程序所必需的。

当我执行以下操作时:

sudo yum install glibc-devel

这是输出结果:

Loaded plugins: product-id, security
Setting up Install Process
Package glibc-devel-2.12-1.166.el6_7.1.x86_64 already installed and latest version
Nothing to do

是否有适用于RHEL的带有GLIBC_2.15的EPEL版本? 如果没有,有什么解决方法吗?


任何需要这些库的程序都会显示错误。以下是一个例子:$ lzturbolzturbo: /lib64/libm.so.6: 找不到版本`GLIBC_2.15' (需要lzturbo)lzturbo: /lib64/libc.so.6: 找不到版本`GLIBC_2.14' (需要lzturbo) - Joe
它作为一个下载二进制文件出现。它来自公司的下载站点。这是否意味着没有经过RHEL的“官方祝福”的实验性软件可以在RHEL上运行?那太疯狂了...如果你想用不同的软件做新的发现,你需要等待RHEL吗? 无论如何,让我们集中讨论一个主要问题:如何在RHEL上安装/指向GLIBC_2.15? 如果您认为这个关于官方/非官方RHEL软件的讨论会在某种程度上帮助我-请继续朝着那个方向发展。如果不是-如果您有任何想法/解决方案,请提供。谢谢 - Joe
1
我建议你不要安装它,因为它太新了。它依赖于RHEL 6所不包含的软件版本。如果你想从RHEL获得支持,我认为你需要等待他们打包这个软件。我想象如果你请求他们支持一个外部安装的东西,他们会告诉你他们不会支持它,并让你询问那个软件的供应商。(这并不是说它不能工作,只是当它崩溃时,你将得到两个碎片。)供应商给你的软件在RHEL 6上无法正常工作。去问一下他们是否有适用于RHEL 6的兼容版本。 - Etan Reisner
你误解了我的意思。我没有告诉你要寻求支持。我说过,如果你以后需要支持,可能就无法得到任何帮助。AWS不是标准的CentOS,他们修改了各种各样的东西。RHEL/CentOS 6没有具备那些符号的glibc版本。你不能在没有构建自己的glibc软件包等情况下获得它们。如果你想在RHEL/CentOS 6上使用这个软件,你需要从供应商那里获取一个专门为RHEL/CentOS 6构建并非其他(更新)系统的软件版本。 - Etan Reisner
好的。以后不需要支持。配置一个类似AWS的系统是否太复杂了(对于这个库所需的部分)?他们在“黑盒子”中做了什么,使得这个软件可以在他们的CentOS上工作,但不能在标准的RHEL上工作? - Joe
显示剩余11条评论
4个回答

55

在RHEL 7上构建软件,然后尝试在RHEL 6上运行时,通常会出现这种情况。

要将GLIBC更新到任何版本,只需从https://ftp.gnu.org/gnu/libc/下载该软件包。

例如,在您的情况下下载glibc-2.14.tar.gz。

1. tar xvfz glibc-2.14.tar.gz
2. cd glibc-2.14
3. mkdir build
4. cd build
5. ../configure --prefix=/opt/glibc-2.14
6. make
7. sudo make install
8. export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

那么尝试运行您的软件,应该链接glibc-2.14。


5
我使用的是glibc-2.15版本。因此,我不得不执行 touch /opt/glibc-2.15/etc/ld.so.conf 命令,否则 make install 会失败。 - twigmac
2
在RHEL 6.5上无法工作,我也遇到了“分段错误”。 - syam
@syam,在这些安装步骤中,你在哪一步遇到了分段错误? - Yu Tao
1
我已经这样做了,但我尝试安装的程序仍然抱怨找不到lib.so.6(GLIBC_2.14)(64位)...有什么建议吗? - user2494298
步骤6:使用sudo make而不是仅仅使用make效果更佳。 - Ron Kalian
显示剩余2条评论

1

天真的问题:是否有可能以某种方式下载GLIBC 2.15,将其放置在任何文件夹中(例如/tmp/myglibc),然后仅在执行需要此特定版本glibc的内容时指向此路径?

是的,这是可能的。


鉴于这似乎是一个由供应商分发的二进制文件,使得简单的“重新编译”选项不可用(最有可能在一开始就完全避免了这个问题),只剩下chroot(实际上是完全不同的系统)或要求进行二进制编辑(假设您的列表是详尽的)。 - Etan Reisner
抱歉,我不明白你在说什么。chroot是什么,如何进行二进制编辑? - Joe
@Joe,你看了链接的答案吗?解决方案相当复杂,如果你懒得通过谷歌查找chroot是什么以及如何进行二进制编辑,那么恐怕你的问题无法自行解决。 - Employed Russian
是的,对于那些自定义的东西我还是个初学者。我了解一些Linux的知识,但以前从未涉及过chroot和二进制编辑。我阅读了链接的答案,但不确定是否容易为我所掌握... - Joe

0
下载rpm包并运行以下命令:
rpm -Uvh glibc-2.15-60.el6.x86_64.rpm \
glibc-common-2.15-60.el6.x86_64.rpm \
glibc-devel-2.15-60.el6.x86_64.rpm \
glibc-headers-2.15-60.el6.x86_64.rpm

0

如果需要另一个 Glibc 实例,请下载 gcc 4.7.2,例如从此 GitHub 存储库(尽管官方来源更好) 并将其提取到某个文件夹中,然后使用您提取 glib 的路径更新 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=$glibpath/glib-2.49.4-kgesagxmtbemim2denf65on4iixy3miy/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$glibpath/libffi-3.2.1-wk2luzhfdpbievnqqtu24pi774esyqye/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$glibpath/pcre-8.39-itdbuzevbtzqeqrvna47wstwczud67wx/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$glibpath/gettext-0.19.8.1-aoweyaoufujdlobl7dphb2gdrhuhikil/lib:$LD_LIBRARY_PATH

这应该能保证你的CentOS不会变砖。

*免责声明:我只是完成了看起来原帖作者想表达的思想,但我并不完全同意。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接