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
[root@fyc119 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
[root@fyc119 opt]# mv glibc-ports-2.16.0 glibc-2.16.0/ports
[root@fyc119 opt]# mkdir cc
由於glibc編譯不能在源代碼內編譯,所以新建一個文件夾cc
[root@fyc119 opt]# cd cc
[root@fyc119 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")
[root@fyc119 cc]# make
[root@fyc119 cc]# make install
但是對於一些項目,不能升級glibc 又怎么辦呢?
還是參照上面,但是要修改一下
[root@fyc119 cc]# ../glibc-2.16.0/configure --prefix=/opt/cc
[root@fyc119 cc]# make
[root@fyc119 cc]# make install
然后glibc庫文件在 /opt/cc/lib
[root@fyc119 cc]#export LD_LIBRARY_PATH=/opt/cc/lib:$LD_LIBRARY_PATH
但是centos6.8下運行nodejs,出現了glibc2.16出問題。而2.14正常。