場景需求
默認(rèn)的Centos6.5 glibc版本最高為2.12, 而在進(jìn)行Nodejs開發(fā)時(shí)項(xiàng)目所依賴的包往往需要更高版本的glibc庫支持, 因此在不升級系統(tǒng)的前提下, 需要主動(dòng)更新系統(tǒng)glibc庫. 一般遇到錯(cuò)誤libc.so.6: version GLIBC_2.14 not found時(shí)表示需要對glibc進(jìn)行升級了.
glibc版本
查看系統(tǒng)glibc庫版本可使用如下命令:
$ strings/lib64/libc.so.6|grep GLIBC_
Centos6.5輸出如下glibc版本列表, 從此圖可以看出系統(tǒng)最高支持glibc的2.12版本:
另外, 執(zhí)行$ ll /lib64/libc**可以看到此時(shí)的libc.so.6是libc-2.12.so的別名, 如下圖所示:
glibc安裝
首先, 點(diǎn)擊此處下載glibc點(diǎn)擊下載, 得到glibc-2.14.tar.gz使用如下命令解壓glibc-2.14.tar.gz:
$ tar-xzvf glibc-2.14.tar.gz
當(dāng)前目錄下得到目錄glibc-2.14, 執(zhí)行$cd glibc-2.14命令進(jìn)入目錄, 依次執(zhí)行如下命令編譯安裝glibc-2.14:
$ mkdir build// 在glibc-2.14目錄下建立build文件夾
$ cd build// 進(jìn)入build目錄
$../configure--prefix=/opt/glibc-2.14// 配置glibc并設(shè)置當(dāng)前glibc-2.14安裝目錄
$ make&&make install// 編譯安裝glibc-2.14庫
glibc軟鏈
安裝完成后, 建立軟鏈指向glibc-2.14, 執(zhí)行如下命令:
$ ln-sf/opt/glibc-2.14/lib/libc-2.14.so/lib64/libc.so.6
****本處并未刪除先前的libc.so.6軟鏈,而是選擇直接覆蓋,因?yàn)橹苯觿h除libc.so.6可能會(huì)導(dǎo)致系統(tǒng)運(yùn)行異常以及無法啟動(dòng)
注意
刪除libc.so.6之后可能導(dǎo)致系統(tǒng)命令不可用的情況, 可使用如下方法解決:
$ LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln-s/opt/glibc-2.14/lib/libc-2.14.so/lib64/libc.so.6
如果上述更新失敗可使用如下命令還原:
$ LD_PRELOAD=/lib64/libc-2.12.so ln-s/lib64/libc-2.12.so/lib64/libc.so.6// libc-2.12.so 此項(xiàng)是系統(tǒng)升級前的版本
執(zhí)行成功之后可執(zhí)行strings/lib64/libc.so.6|grep GLIBC_ 命令 和ll /lib64/libc** 查看當(dāng)前的GLIBC支持的版本和libc.so.6軟鏈的對應(yīng)情況
glibc升級引起locale警告
解決:設(shè)置語言相關(guān)的locale-archive文件
###復(fù)制到編譯好的glibc 2.14的lib/locale中抬探,記得先創(chuàng)建locale目錄
# mkdir /opt/glibc-2.14/lib/locale
# cp /usr/lib/locale/locale-archive /opt/glibc-2.14/lib/locale/
# /usr/local/glibc-2.14/bin/localedef -i en_US -f UTF-8 en_US.UTF-8 ##運(yùn)行生成相應(yīng)的locale配置文件