centos glibc升级

最近装在centos上装一个工具后,运行部分python代码会报错: OSError: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by /home/data/Public_tools/anaconda3/envs/pytorch/lib/python3.8/site-packages/torch_spline_conv/_basis_cuda.so)。百度一堆解决方法,经过测试,找到一个最接近解决问题的博客:Centos 7 升级 Glibc-2.28。但是在实操过程中遇到了两个问题。一个是升级gcc失败,另一个是通过 make 安装glibc2.28导致系统崩溃。

经过一番操作最终完全来了系统修复,并成功升级到glibc-2.28,python代码正常运行。分享如下:

GLIBC是向下兼容的,安装高版本的同时会同时安装低版本。因此,我这里选择安装GLIBC_2.28,参照:Centos 7 升级 Glibc-2.28

# 下载并解压安装包
$ wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
$ tar -xzvf glibc-2.28.tar.gz
$ cd glibc-2.28

# 创建临时文件
$ mkdir build && cd build

# 配置环境 
$ ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 安装(此步可能会导致系统错误,建议先看完本文再执行)
$ make
$ make install

# 查询安装结果
$ strings /lib64/libc.so.6 | grep GLIBC

在配置环境时,大概率会报编译工具过旧 These critical programs are missing or too old: make compiler,需要升级gcc和make。这些用devtoolset-8-gcc来安装gcc8,参照:如何使用devtoolset-8-gcc安装gcc8

升级gcc (使用devtoolset-8-gcc安装gcc8)

# 安装devtoolset-8-gcc
$ yum install centos-release-scl
$ yum install devtoolset-8
$ scl enable devtoolset-8 -- bash

# 启用工具
$ source /opt/rh/devtoolset-8/enable 

# 安装GCC-8
$ yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils

# 设置环境变量
$ echo "source /opt/rh/devtoolset-8/enable" >> /etc/profile
$ source /etc/profile

升级make

# 下载并解压安装包
$ wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
$ tar -xzvf make-4.3.tar.gz 
$ cd make-4.3/

# 安装到指定目录
$ ./configure  --prefix=/usr/local/make
$ make
$ make install 

# 创建软链接
$ cd /usr/bin/
$ mv make make.bak # backup
$ ln -sv /usr/local/make/bin/make /usr/bin/make

返回glibc-2.28目录,继续配置环境。执行make install时导致系统错误,导致ls, df, vim等一系列命令无法执行,链ssh都无法使用,导致不能重新登录服务器,因此,千万不要退出重新登录或是重启服务器,会崩掉的!!!

出现错误的原因是,glibc升级时 /usr/bli64目录中的链接没有更新完全,导致各个链接对应不上,系统出现故障,参照: https://blog.youkuaiyun.com/fei321321/article/details/100022115

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值