redhat6系统默认安装的glibc-2.12,有的软件依赖的是glibc-2.14,这时需要升级glibc,下载安装 http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

# ./configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
# make
# make install

结果make install报错,同时除了cd外各种命令都用不了,会报各种shared libraries: *: cannot open shared object file: No such file or directory

ls: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or directory

这些shared libraries都位于/lib64/下,而且此时机器无法远程登录,
现在只有一个终端root账号登录在服务器上,除了能执行cd之外什么都做不了,omg
各种google都无法解决,自己努力

1 首先尝试从其他服务器远程传输/lib64/下的所有文件和link到本机,但是各种传输命令都不能用,比如nc、scp等

2 其次怀疑有可能是link损坏,尝试手工重建报错的link

# ln -s libtinfo.so.5.7 libtinfo.so.5
ln: creating symbolic link `libtinfo.so.5': File exists

虽然ls不能用,但是看起来/lib64/下各种文件和link都还在,那为什么会报No such file or directory?

3 再次通过export查看一下当前的环境变量(export还能用):

# export
declare -x LD_LIBRARY_PATH="/usr/local/lib"

尝试修改LD_LIBRARY_PATH,增加/lib64:

export LD_LIBRARY_PATH=/lib64:$LD_LIBRARY_PATH

很多命令居然可以用了,这次glibc升级的过程是这样的,以其中一个library为例:

安装之前:

-rwxr-xr-x 1 root root 161776 Jun 19 2018 ld-2.12.so
lrwxrwxrwx 1 root root 10 Jun 19 2018 ld-linux-x86-64.so.2 -> ld-2.12.so

安装之后:

-rwxr-xr-x 1 root root 161776 Jun 19 2018 ld-2.12.so
-rwxr-xr-x 1 root root 838308 Jan 24 15:41 ld-2.14.so
lrwxrwxrwx 1 root root 10 Jan 24 16:28 ld-linux-x86-64.so.2 -> ld-2.14.so

将这次安装的改动回滚,即将所有的link都改为指回2.12版本

# ls -l /lib64|grep 2.14|grep lrw|awk '{print "ln -snf "$11" "$9}'|sed 's/2.14/2.12/g'
ln -snf ld-2.12.so ld-linux-x86-64.so.2
ln -snf libBrokenLocale-2.12.so libBrokenLocale.so.1
ln -snf libanl-2.12.so libanl.so.1
ln -snf libc-2.12.so libc.so.6
ln -snf libcidn-2.12.so libcidn.so.1
ln -snf libcrypt-2.12.so libcrypt.so.1
ln -snf libdl-2.12.so libdl.so.2
ln -snf libm-2.12.so libm.so.6
ln -snf libnsl-2.12.so libnsl.so.1
ln -snf libnss_compat-2.12.so libnss_compat.so.2
ln -snf libnss_dns-2.12.so libnss_dns.so.2
ln -snf libnss_files-2.12.so libnss_files.so.2
ln -snf libnss_hesiod-2.12.so libnss_hesiod.so.2
ln -snf libnss_nis-2.12.so libnss_nis.so.2
ln -snf libnss_nisplus-2.12.so libnss_nisplus.so.2
ln -snf libpthread-2.12.so libpthread.so.0
ln -snf libresolv-2.12.so libresolv.so.2
ln -snf librt-2.12.so librt.so.1
ln -snf libutil-2.12.so libutil.so.1

全部执行一遍,故障恢复,各种命令都可以使用,机器也恢复远程登录。

【原创】大叔经验分享(27)linux服务器升级glibc故障恢复的更多相关文章

  1. linux服务器升级python版本(python2与python3共存)

    linux服务器升级python版本 ######################################## 第一步先安装sqlite-devel,因为python2也有这个,python3 ...

  2. 【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?

    前言 之前也分享过很多工作中踩坑的经验: 一个线上问题的思考:Eureka注册中心集群如何实现客户端请求负载及故障转移? [原创]经验分享:一个Content-Length引发的血案(almost.. ...

  3. Linux CentOS6升级glibc库过程

    CentOS6升级glibc库过程 hadoop无法加载native库,可能原因是 glibc库版本过低,需要升级. 第一:安装以下软件 yum -y install zlib zlib-devel ...

  4. 【原创】大叔经验分享(90)linux服务器iowait和负载很高

    # top top - 21:21:51 up 207 days, 1:30, 5 users, load average: 0.90, 0.79, 1.62 Tasks: 249 total, 1 ...

  5. 【原创】大叔经验分享(18)hive2.0以后通过beeline执行sql没有进度信息

    一 问题 在hive1.2中使用hive或者beeline执行sql都有进度信息,但是升级到hive2.0以后,只有hive执行sql还有进度信息,beeline执行sql完全silence,在等待结 ...

  6. 【原创】大叔经验分享(26)hive通过外部表读写elasticsearch数据

    hive通过外部表读写elasticsearch数据,和读写hbase数据差不多,差别是需要下载elasticsearch-hadoop-hive-6.6.2.jar,然后使用其中的EsStorage ...

  7. 【原创】大叔经验分享(7)创建hive表时格式如何选择

    常用格式 textfile 需要定义分隔符,占用空间大,读写效率最低,非常容易发生冲突(分隔符)的一种格式,基本上只有需要导入数据的时候才会使用,比如导入csv文件: ROW FORMAT DELIM ...

  8. 【原创】大叔经验分享(43)logstash设置jdbc_default_timezone后报错

    logstash6.6.0-6.6.2版本使用jdbc input plugin时如果设置了jdbc_default_timezone,会报错: { 2012 rufus-scheduler inte ...

  9. 【原创】大叔经验分享(36)CM部署kafka

    1 下载kafka parcel http://archive.cloudera.com/kafka/parcels/latest/KAFKA-3.1.1-1.3.1.1.p0.2-el7.parce ...

随机推荐

  1. idea免费破解

    1.下载破解补丁. https://pan.baidu.com/s/1pWCr_HIHURSAbGvvo70wKA   密码:pxkv 2.下载idea网址: https://www.jetbrain ...

  2. 软件工程(GZSD2015) 第二次作业文档模板

    题目: (此处列出题目) 需求分析: 基本功能 基本功能点1 基本功能点2 ... 扩展功能(可选) 高级功能(可选) 设计 设计点1 设计点2 ... 代码实现 // code here 程序截图 ...

  3. .class和.getClass()的区别

    使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在类 如: getClass() 返回此 Object 的运行时类. //需要有com.lpx.test.class这个类 Logger ...

  4. Linux下开启和关闭Telnet服务

    telnet与ssh相比,安全性能并不高,但是在SSH版本升级或者其他的情况下还是需要开启这一服务. linux提供服务是由运行在后台的守护程序(daemon)来执行的,telnet服务是由xinet ...

  5. css 溢出overflow

    css 溢出overflow 当一个元素被设置为固定大小,在这个元素中的内容如果超出元素的界限,就会出现溢出的现象. 通常情况下我们可以通过overflow来控制这个属性. overflow语法定义 ...

  6. 扩展CRT +扩展LUCAS

    再次感谢zyf2000超强的讲解. 扩展CRT其实就是爆推式子,然后一路合并,只是最后一个式子上我有点小疑惑,但整体还算好理解. #include<iostream> #include&l ...

  7. 配置sudo记录日志

    sudosudo命令用来以其他身份来执行命令,预设的身份为root.在/etc/sudoers中设置了可执行sudo指令的用户.若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员.用户使用 ...

  8. Mybatis的应用1 Mybatis和logback的应用配置

    首先新建一个module, 然后,在pom文件里面添加一些引用的项. pom.xml <?xml version="1.0" encoding="UTF-8&quo ...

  9. 计算pi的位数

    from random import random from math import sqrt from time import clock DARTS=1000000 hits=0.0 clock( ...

  10. 微信小程序之canvas 文字断行和省略号显示

    文字的多行处理在dom元素中很好办.但是canvas中没有提供方法,只有通过截取指定字符串来达到目的. 那么下面就介绍我自己处理的办法: wxml: <canvas canvas-id='wor ...