Pac*_*qui 11 update upgrade glibc libc6 centos7
我在 CentOS 机器上尝试了一个 python 应用程序,它给了我以下错误:
ImportError: /usr/lib64/libc.so.6: version `GLIBC_2.18' not found (required by /tmp/_MEI2BYIr4/libstdc++.so.6)
Run Code Online (Sandbox Code Playgroud)
我一直想升级 GLIBC,但是在阅读了一些论坛之后,我似乎可以破坏系统。你知道有什么替代方案吗?
谢谢
Sim*_*ood 17
首先检查 python 应用程序,因为它可能已经过时并且可能误读了glibc
版本。CentOS 显示已安装的基本版本并已打补丁以跟上变化,这可能只是修复代码中正在寻找的版本作为快速修复的一种情况,但如果应用程序正在积极开发中,您需要如果可以,请让开发人员知道或自己分叉。
glibc
CentOS 7 的最新版本应该是2.17-196.el7_4.2
如果绝对有必要运行这个应用程序,官方的 RHEL 方法是容器化,但你仍然需要提供一个可用的 glibc,这在 CentOS 7 中是不可能的。
glibc
在非标准位置如果这不可行,并且作为绝对的最后手段,可以安装glibc
比 2.18更新的版本,因为它已经有 9 年历史并且glibc
已经针对多个漏洞进行了更新,我不确定如果它将使用make
CentOS 7 中的版本构建,但任何更新的版本都应按如下方式工作:
您可以glibc
在服务器上的其他地方构建您需要的版本,并将其添加到LD_LIBRARY_PATH
应用程序中。请注意,这必须仅针对应用程序执行。
wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz
tar zxvf glibc-2.18.tar.gz
cd glibc-2.18
mkdir build
cd build
../configure --prefix=/opt/glibc-2.18
make -j4
sudo make install
Run Code Online (Sandbox Code Playgroud)
然后运行一个二进制文件,你需要用它patchelf
来更新它的解释器
patchelf --set-interpreter /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 program_you_are_running
Run Code Online (Sandbox Code Playgroud)
并且您需要启用它以查找新的 glibc 库,或者通过
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/glibc-2.18/lib
Run Code Online (Sandbox Code Playgroud)
或者您可以使用patchelf
更新二进制文件的 rpath(您可以将其与上一个pathelf
命令结合使用)
patchelf --set-rpath /opt/glibc-2.18/lib:/usr/lib64 program_you_are_running
Run Code Online (Sandbox Code Playgroud)
如果您更改,LD_LIBRARY_PATH
请不要为整个系统导出它,因为所有未修改的二进制文件patchelf
都会出现段错误。
/opt
是安装第三方应用程序和库的标准位置,但您可以使用系统路径以外的任何路径。
归档时间: |
|
查看次数: |
52012 次 |
最近记录: |