Centos 升级glibc
Centos 升级glibc
前言
刚升级了glibc,整理网上文章如下
glibc简介
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个操作系统。
百科
为什么要升级
查看系统glibc库版本可使用如下命令:
$ strings /lib64/libc.so.6 |grep GLIBC_
Centos 为了稳定使用的glibc版本通常比较低。而安装有些程序需要依赖新版本。升级glibc需要慎重,因很多人升级失败后导致系统不能用了。
如果升级基本C运行库到一个太新的版本,可能会影响CentOS的运行。所以大家如果遇到CentOS基本库的问题,影响了自己程序的运行,应该可以考虑:
在低版本的系统编译自己的产品,如果自己的产品确实不需要新版才支持的新特性
用版本高的系统来编译,比如ubuntu,和centos的新版,但可能需要部署到较低版本,那么可以考虑用mock等技术制作更好的安装包,把依赖打入包内
利用容器技术,如Docker,在低版本的操作系统内,轻量级的隔离出一个虚拟运行环境,适应你的程序。
升级过程
选择版本下载安装包
https://ftp.gnu.org/gnu/glibc/
1 | wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz |
安装gcc
1 | yum -y install gcc |
编译
1 | mkdir build |
glibc软链
1 | rm -rf /lib64/libc.so.6 |
glibc升级失败回滚方法
1 | LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6 |
相关原理
glibc在linux下是个软链接。1
2$ ll /lib64/libc.so.6
lrwxrwxrwx 1 root root 19 Sep 23 08:29 /lib64/libc.so.6 -> /lib64/libc-2.12.so
上面做的事情是:
- 把新的glibc编译好了。
- 然后,把旧的删除,新的换上去。
因为ln命令本身依赖glibc库,前面删除glibc软链之后需要使用:1
LD_PRELOAD=/opt/glibc-2.15/lib/libc-2.15.so ln -s /opt/glibc-2.15/lib/libc-2.15.so /lib64/libc.so.6
手工指定glibc库的位置来完成ln命令执行。
相关链接
http://m.blog.csdn.net/article/details?id=52033950
http://blog.csdn.net/officercat/article/details/39520227