Centos 升级glibc

Centos 升级glibc

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