zoukankan      html  css  js  c++  java
  • 【原创】大叔经验分享(27)linux服务器升级glibc故障恢复

    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

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

  • 相关阅读:
    FLEX 几何学
    tcpip协议详解二知识进阶
    打造模块化的Flex应用
    java网络编程知识整理
    ActionScript实现数组快速去重算法
    Adobe Flex迷你教程 — CursorManager使用
    TCP连接中的TIME_WAIT状态二
    TCP连接中的TIME_WAIT状态
    flex 帮助文档制作(HTML)
    Intellij IDEA下flex国际化配置
  • 原文地址:https://www.cnblogs.com/barneywill/p/10315603.html
Copyright © 2011-2022 走看看