1. 直接升级
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现...
总的来说,不说运行在Linux上的一些应用,或者你之前部署过的产品,就是很多linux的基本命令,比如cp, rm, ll之类,都得依赖于它
网上很多人有惨痛教训,甚至升级失败后系统退出后无法重新进入了。。
对于CentOS这样的系统,为了追求稳定性(这个值得商榷)往往各种库版本都很低,比如6.5甚至7.0自带的还是glibc2.12, 而ubuntu 14.04带glibc2.19
如果升级基本C运行库到一个太新的版本,可能会影响CentOS的运行。所以大家如果遇到CentOS基本库的问题,影响了自己程序的运行,应该可以考虑:
源代码编译升级系统glibc版本,下载glibc从http://ftp.gnu.org/gnu/glibc/下载
先行查看glibc版本,运行 /lib64/libc.so.6 (/lib64/libc.so.6也是一个软链接文件,直接运行就可以看到指向,本文为/lib64/libc-2.12.so
[[email protected] opt]# ll /lib64/libc.so.6
现在得到版本为2.12
glibc2.16以下,需要下载glibc-ports-2.16.0.tar.gz,和对应glibc-2.16.0.tar.gz
cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.16.0.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.16.0.tar.gz
tar xf glibc-2.16.0.tar.gz
tar xf glibc-ports-2.16.0.tar.gz
ls
[[email protected] opt]# mv glibc-ports-2.16.0 glibc-2.16.0/ports
[[email protected] opt]# mkdir cc
由于glibc编译不能在源代码内编译,所以新建一个文件夹cc
[[email protected] opt]# cd cc
[[email protected] cc]# ../glibc-2.16.0/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
#(直接把glibc编译后安装的代码写入/lib64, 即/usr/lib64,如果缺乏编译gcc ,运行 yum groupinstall "Development tools")
[[email protected] cc]# make
[[email protected] cc]# make install
但是对于一些项目,不能升级glibc 又怎么办呢?
还是参照上面,但是要修改一下
[[email protected] cc]# ../glibc-2.16.0/configure --prefix=/opt/cc
[[email protected] cc]# make
[[email protected] cc]# make install
然后glibc库文件在 /opt/cc/lib
[[email protected] cc]#export LD_LIBRARY_PATH=/opt/cc/lib:$LD_LIBRARY_PATH
但是centos6.8下运行nodejs,出现了glibc2.16出问题。而2.14正常。