某软件出现漏洞,需要升级解决(忘了哪个)结果提示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,即使升级也要做好万全的准备!

Centos7 64位 -- glibc-2.29 编译升级方法(已成功)的更多相关文章

  1. 002-docker安装-mac上安装docker,17.06在CentOS7 64位机器上安装

    一.mac上安装docker 1.下载 通过这个链接下载:https://download.docker.com/mac/stable/Docker.dmg 2.安装 将 Moby 的鲸鱼图标拖拽到  ...

  2. CentOS7 64位 安装MySQL5.7

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  3. 超详细的CentOS7 64位下MySQL5.7安装与配置(YUM)【转发+新创】

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  4. 下载Centos7 64位镜像

    下载Centos7 64位镜像 1.打开Centos官网 打开Centos官方网站地址:https://www.centos.org/,点击Get CentOS Now 2.点击Minimal ISO ...

  5. CentOS7 64位下MySQL5.7安装与配置(YUM)转

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  6. CentOS7 64位下MySQL5.7安装与配置

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  7. 安装MySQL5.7 安装环境:CentOS7 64位 MINI版,

    安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo ...

  8. CentOS7 64位下MySQL安装与配置(YUM)

    安装环境:腾讯云CentOS7 64位安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum ...

  9. Windows10 64位下安装TensorFlow谷歌人工智能系统已官方原生支持

    Windows10 64位下安装TensorFlow谷歌人工智能系统已官方原生支持 GitHub - tensorflow/tensorflow: Computation using data flo ...

随机推荐

  1. Android联网更新应用

    UpdateInfo public class UpdateInfo { public String version;//服务器的最新版本值 public String apkUrl;//最新版本的路 ...

  2. scrapy系列(三)——基础spider源码解析

    前面两章介绍了scrapy的安装和项目的新建,那么这一章就讲讲spider吧. scrapy有个命令是runspider, 这个命令的作用就是将一个spider当做一个python文件去执行,而不用创 ...

  3. [20180625]oradebug peek 2.txt

    [20180625]oradebug peek 2.txt --//上个星期演示了oradebug peek查看内存数据块的情况,oradebug peek {address} length 1,最后 ...

  4. Linux 小知识翻译 - 「Linux」和「发行版」之间的关系

    「Linux」本来指的仅仅是内核.5年之前大多都是这么认为的,但是最近不这么说了. 最近一般都说「Linux」是个 OS,这里的OS,不仅仅是内核,而是指电脑的整体环境(除了内核,还包括一些外围的软件 ...

  5. 搜索插入位置的golang实现

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引.如果目标值不存在于数组中,返回它将会被按顺序插入的位置. 你可以假设数组中无重复元素. 输入: [,,,], 输出: 输入: [,,,] ...

  6. ZooKeeper学习总结 第二篇:ZooKeeper深入探讨

    其实zookeeper系列的学习总结很早就写完了,这段时间在准备找工作的事情,就一直没有更新了.下边给大家送上,文中如有不恰当的地方,欢迎给予指证,不胜感谢!. 1. 数据模型 1.1. 只适合存储小 ...

  7. Flex布局新写法兼容写法详解

    很久之前用过flex,但是没有考虑过兼容性问题,为了兼容ios一定要加上-webkit前缀: ul{ display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ ...

  8. Problem UVA1572-Self-Assembly(拓扑排序)

    Problem UVA1572-Self-Assembly Accept: 196  Submit: 1152 Time Limit: 3000 mSec Problem Description Au ...

  9. UVA10129-Play on Words(欧拉路径)

    Problem UVA10129-Play on Words Accept: 2534  Submit: 19477 Time Limit: 3000 mSec Problem Description ...

  10. Codeforces Round #553 (Div. 2) D. Stas and the Queue at the Buffet 贪心+公式转化

    题意 给出n个pair (a,b) 把它放在线性序列上 1--n 上 使得  sum(a*(j-1)+b*(n-j))  最小 思路 :对式子进行合并 同类项 有:    j*(a-b)+  (-a+ ...