前段时间在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
4wget 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.rpm1
2
3
4rpm -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
4cd /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
4mkdir 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
2make
make install
安装完后查看一下当前glibc的版本,如果最高到2.17的话,说明安装成功。
问题
你会注意到,配置安装目录的路径是/usr
,这么做的目的是在安装的时候直接覆盖旧版的glibc。
网上的一些博客的教程会在配置安装目录的时候,把路径配置到/usr
之外的地方,比如 1
../configure --prefix=/opt/glibc-2.17
然后把旧的软连接/lib64/libc.so.6
删掉,再创建新的软连接。
事实上,这种做法是有风险的,一旦你把软连接删掉,系统在那一瞬间,一些核心的命令和功能就暂时废掉了。一开始我也这么做的,当我马上再创建新的软连接时就报了各种错。为了实验可行性,还导致我重装了好几次系统。
Comments