Centos7 64位 -- glibc-2.29 編譯升級方法(已成功)


 

某軟件出現漏洞,需要升級解決(忘了哪個)結果提示glibc版本過低、

懵懂無知的我以為glibc想其他軟件一樣編譯升級一下就好。。

  結果? 重裝系統!

說真的,如非必要(或學習),請勿升級 glibc!

 

一、心理准備

  咱們先來說一下,glibc 出錯你會出現什么問題:

  1. 影響最小的情況下,無法解析名稱空間不過你可以通過ip連接網絡)

  2. 無法使用rpm yum (對文件非常熟悉的話解包復制還是可以的)

  3. 無法使用 su 登陸,無法切換用戶(單是這樣的話單用戶模式還是可以使用的)

  4. bash 使用不了,這種情況下整個系統你只能使用 cd 或者 export 等屈指可數的指令(只有救援模式可救)

 

二、物理准備

1. 准備一個U盤啟動盤 ,用於拯救系統,具體見我的另外一篇隨筆:Centos7 -- glibc 升級失敗、意外刪除、故意刪除后的處理方法

2. 下載 glibc、make 的 feroda29系統 rpm包 (選用feroda的包是最接近目標的,目前本人的系統為 centos7.6, 但glibc升級需求的工具仍達不到版本需求):

  安裝地址:全部百度都有,有空的話我再發出來

  以下5個裝了之后你的系統就能正常用了(缺一不可)

  glibc-2.28-26.fc29.x86_64.rpm        //基礎包,沒個bash用不了

  glibc-common-2.28-26.fc29.x86_64.rpm    //基礎包的依賴包

  glibc-all-langpacks-2.28-26.fc29.x86_64.rpm  //語言包,缺的話你的字符終端會看到非常多星星

  libnsl-2.28-26.fc29.x86_64.rpm        //名稱空間的庫,沒有的話su登錄不了,dns也無法域名解析

  libxcrypt-4.4.4-2.fc29.x86_64.rpm       //加密用的庫,遠程傳輸都需要用到

  

  想繼續玩編譯的話還需要以下幾個包:

  gcc-8.3.1-2fc29.x86_64.rpm

  glibc-devel-2.28-26.fc29.x86_64.rpm

  glibc-headers-2.28-26.fc29.x86_64.rpm

  libxcrypt-devel-4.4.4-2.fc29.x86_64.rpm

  make-4.2.1-10.fc29.x86_64.rpm

 

 

三、安裝必要rpm包(升級到glibc-2.28)

1. 按順序安裝rpm包:

  # rpm -Uvh  glibc-2.28-26.fc29.x86_64.rpm --nodeps //與comm為互相依賴,必須要加 --nodeps      

  # rpm -Uvh glibc-common-2.28-26.fc29.x86_64.rpm    

  # rpm -Uvh glibc-all-langpacks-2.28-26.fc29.x86_64.rpm  

  # rpm -Uvh libnsl-2.28-26.fc29.x86_64.rpm       

  # rpm -Uvh libxcrypt-4.4.4-2.fc29.x86_64.rpm     

 

2.重啟檢查系統是否正常運行

  # shutdown -r now

  期間會卡一段時間並重啟,先不要管

  待重啟成功后檢查系統功能是否正常, 如不正常請參照:

  Centos7 -- glibc 升級失敗、意外刪除、故意刪除后的處理方法 

  刪除新版gblic重裝舊版glibc后再來一遍

 

3.安裝剩下開發包

  # rpm -Uvh gcc-8.3.1-2fc29.x86_64.rpm     //如果安裝失敗請通過編譯方式,由於我之前已升級gcc,此步忽略了

  # rpm -Uvh glibc-devel-2.28-26.fc29.x86_64.rpm --nodeps

  # rpm -Uvh glibc-headers-2.28-26.fc29.x86_64.rpm

  # rpm -Uvh libxcrypt-devel-4.4.4-2.fc29.x86_64.rpm

  # rpm -Uvh make-4.2.1-10.fc29.x86_64.rpm

 

四、編譯升級 glibc-2.29

其實上一步完成后你的glibc已經是次新版了,如果不想浪費時間可以就此停止

1.下載 glibc-2.29 源碼 

  官網:http://www.gnu.org/software/libc/sources.html

  # wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz 

  # tar zxf glibc-2.29.tar.gz

  # cd glibc-2.29

 

2.查看文檔

  # cat INSTALL     //先看看文檔吧

  需求工具版本:

    *GNU  'make'  4.0 or newer 

    *GCC 5 or newer

    *GNU  'binutils' 2.25 or later

    *GNU  ‘textinfo’' 4.7 or later

    *GNU  'awk' 3.1.2 or later

    *GNU  'bison' 2.7 or later

    *Perl 5

    *GNU  'sed' 3.02 or later

    *Python 3.4 or later

    *PExpect 4.0

    *GDB 7.8 or later with support for Python 2.7/3.4 or later

 

3.編譯安裝

  # mkdir tmpdir      //glibc只能在其他目錄進行編譯,gcc也是

  # cd tmpdir  

  # ../configure --prefix=/        // 期間如果報錯相應工具版本過老,請升級相應的包,如果提示是 compiler 那你要升級gcc   

  # make && make install      

  # init 6          // 期間會卡一段時間並重啟,耐心等候

 

總結:

  glibc是linux非常底層的工具庫(內核之上,一切工具之下),一旦出錯很可能整個系統無法使用

  因此如非特殊情況,盡量不要升級glibc,即使升級也要做好萬全的准備!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM