Centos6.*升級glibc過程

場景需求

默認的Centos6.5 glibc版本最高為2.12, 而在進行Nodejs開發時項目所依賴的包往往需要更高版本的glibc庫支持, 因此在不升級系統的前提下, 需要主動更新系統glibc庫. 一般遇到錯誤libc.so.6: version GLIBC_2.14 not found時表示需要對glibc進行升級了.

glibc版本

查看系統glibc庫版本可使用如下命令:

$ strings/lib64/libc.so.6|grep GLIBC_

Centos6.5輸出如下glibc版本列表, 從此圖可以看出系統最高支持glibc的2.12版本:

另外, 執行$ ll /lib64/libc**可以看到此時的libc.so.6是libc-2.12.so的別名, 如下圖所示:


glibc安裝

首先, 點擊此處下載glibc點擊下載, 得到glibc-2.14.tar.gz使用如下命令解壓glibc-2.14.tar.gz:

$ tar-xzvf glibc-2.14.tar.gz

當前目錄下得到目錄glibc-2.14, 執行$cd glibc-2.14命令進入目錄, 依次執行如下命令編譯安裝glibc-2.14:

$ mkdir build// 在glibc-2.14目錄下建立build文件夾

$ cd build// 進入build目錄

$../configure--prefix=/opt/glibc-2.14// 配置glibc并設置當前glibc-2.14安裝目錄

$ make&&make install// 編譯安裝glibc-2.14庫

glibc軟鏈

安裝完成后, 建立軟鏈指向glibc-2.14, 執行如下命令:

$ ln-sf/opt/glibc-2.14/lib/libc-2.14.so/lib64/libc.so.6

****本處并未刪除先前的libc.so.6軟鏈,而是選擇直接覆蓋,因為直接刪除libc.so.6可能會導致系統運行異常以及無法啟動

注意

刪除libc.so.6之后可能導致系統命令不可用的情況, 可使用如下方法解決:

$ 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 此項是系統升級前的版本

執行成功之后可執行strings/lib64/libc.so.6|grep GLIBC_ 命令 和ll /lib64/libc** 查看當前的GLIBC支持的版本和libc.so.6軟鏈的對應情況

glibc升級引起locale警告

解決:設置語言相關的locale-archive文件

###復制到編譯好的glibc 2.14的lib/locale中,記得先創建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 ##運行生成相應的locale配置文件

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容