CentOS6升级glibc2.17

前段时间在CentOS6集群上跑TensorFlow的时候遇到了glibc和gcc版本过低的问题。本篇先讲升级glibc。

注意,glibc是linux的核心底层库,一旦升级失败,系统基本就完蛋了。虽然这个教程我有九成把握能升级成功,但是为了避免突发情况,建议你在实际环境上升级之前,先跑一台虚拟机去模拟升级。

检测你的glibc版本

1
strings /lib64/libc.so.6 | grep GLIBC

1
ldd --version

安装必要依赖

1
yum install -y wget gcc glibc kernel-devel

方法一:rpm无痛升级

可以直接用社区制作好的rpm包来轻松升级。缺点是社区维护的版本不高,目前centos6最高维护到2.17,你想装2.18的话就没有了。

下载rpm包

1
2
3
4
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-common-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-devel-2.17-55.el6.x86_64.rpm
wget http://copr-be.cloud.fedoraproject.org/results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/glibc-headers-2.17-55.el6.x86_64.rpm
### 安装rpm包
1
2
3
4
rpm -Uvh glibc-2.17-55.el6.x86_64.rpm \
glibc-common-2.17-55.el6.x86_64.rpm \
glibc-devel-2.17-55.el6.x86_64.rpm \
glibc-headers-2.17-55.el6.x86_64.rpm

安装完后查看一下当前glibc的版本,如果最高到2.17的话,说明安装成功。

方法二:源码安装glibc

源码安装的缺点就是有些麻烦,要花时间下载以及编译安装。优点就是你想要的所有版本都能安装上。

下载和解压

1
2
3
4
cd /usr/local/src
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.17.tar.gz

tar -xf glibc-2.17.tar.gz

配置编译参数

1
2
3
4
mkdir glibc-build
cd glibc-build

../glibc-2.17/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

编译与安装

1
2
make
make install

安装完后查看一下当前glibc的版本,如果最高到2.17的话,说明安装成功。

问题

你会注意到,配置安装目录的路径是/usr,这么做的目的是在安装的时候直接覆盖旧版的glibc。

网上的一些博客的教程会在配置安装目录的时候,把路径配置到/usr之外的地方,比如

1
../configure --prefix=/opt/glibc-2.17

然后把旧的软连接/lib64/libc.so.6删掉,再创建新的软连接。

事实上,这种做法是有风险的,一旦你把软连接删掉,系统在那一瞬间,一些核心的命令和功能就暂时废掉了。一开始我也这么做的,当我马上再创建新的软连接时就报了各种错。为了实验可行性,还导致我重装了好几次系统。

CentOS6升级gcc4.9 博客折腾记录

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×