关于升级Glibc时取消了libc.so.6软链接的怎么挽救的问题

        拷贝/lib64/libc-2.12.so和/lib64/libc.so.6文件

    cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so

    cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6

    注:如果拷贝失败:用强制拷贝cp -rf 命令            

事情是这样的。。。。

*问题起源

我本来想在centos6.5中安装IntelliJ Idea来配置编写spark程序的,但是Idea.sh想启动的时候出现了一下错误

[hadoop@hadoop001 bin]$ ./idea.sh
/opt/idea/jbr/bin/java: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/idea/jbr/bin/../lib/jli/libjli.so)

 查看已有的GLIBC发现确实缺少上述版的,最高只支持GLIBC_2.12

[hadoop@hadoop001 bin]$ strings /lib64/libc.so.6 |grep GLIBC_
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE

 所以说我的GLIBC_2.12需要升级成_2.14才行

*我以为找到完整的解决方案了

 网上清一色的如何 解决"libc.so.6: version 'GLIBC_2.14' not found"问题,而且方法基本一致,即:

1.从http://ftp.gnu.org/gnu/glibc/中下载glibc-2.14.tar.xz解压到某路径下
2.进入解压后的glibc-2.14文件夹下,mkdir build创建一个文件夹build,并进入该文件夹下
3.../configure --prefix=/usr/local/glibc-2.14
4.make -j4
5.make install
6.修改临时变量
  export LD_LIBRARY_PATH=/usr/local/glibc-2.14/lib
并source使其生效(决不能写在/etc/profile文件里,否则会导致某些shell命令执行不了

 即类似这样

网络上很多方法基本就是以上这样,就叫你重新idea.sh即可了

但是仅仅这样并不能成功,你再次查看GLIBC最高版也还只是glibc-2.12

所以我想肯定是少了哪些步骤,然后我就看到了这篇

升级glic: 解决"libc.so.6: version 'GLIBC_2.14' not found"问题 https://www.cnblogs.com/kevingrace/p/8744417.html

里面有这样一部分内容如下:

修改/lib64/libc.so.6的软链接来源,由之前的libc-2.12.so修改为libc-2.14.so
[root@uatblockchain01 build]# cd /lib64
[root@uatblockchain01 lib64]# ll libc.so.6
lrwxrwxrwx 1 root root 12 Apr  8 03:50 libc.so.6 -> libc-2.12.so
         
[root@uatblockchain01 lib64]# ll /usr/local/glibc-2.14/lib/libc-2.14.so
-rwxr-xr-x 1 root root 9645192 Apr  8 03:28 /usr/local/glibc-2.14/lib/libc-2.14.so
[root@uatblockchain01 lib64]# cp /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/
         
删除libc-2.12.so之前的软链接
[root@uatblockchain01 lib64]# unlink /lib64/libc.so.6
或者直接执行
[root@uatblockchain01 lib64]# rm -f /lib64/libc.so.6

 看到他这里我突然意识到自己该怎么做了,于是依葫芦画瓢执行了其指令

但是标红部分开始让我不知所措了,我取消了libc.so.6软链接,果然出现了后面警示的情况

 

 *步入正题

其实人家也说了解决方法,但是由于我是普通用户登录的,即使在当前终端并未关闭的情况下,急救方法也没用。于是我放弃了这类方法,关闭了我的centos6.5客户机。

所以我现在想总结一下,当取消了glibc的软链接libc.so.6该如何挽救?

情况一:未关闭当前终端且当前用户为root用户

(这类搜error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory能找到答案

情况二:未关闭当前终端但当前用户为普通用户/关闭了当前终端重启客户机

我主要说我自己实践成功的情况二,由于我是普通用户无法适用情况一的方法,于是我关闭了客户机

这篇经验贴给了我一些帮助: https://www.cnblogs.com/yizhipanghu/p/10254186.html

进入救援模式Rescue install system可以参考https://zhidao.baidu.com/question/332470303737144965.html
首先我这是VMware虚拟机

由于我很早之前下载的镜像文件还好好地在电脑里,很顺利,这样设置后重启客户机,开机时点击鼠标左键,然后快速按下一次ESC键,后面选择

'CD-ROM Drive'回车,选择Rescue install system

重要的是最后进入shell界面处要拷贝/lib64/libc-2.12.so和/lib64/libc.so.6文件

    cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so

    cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6

    注:如果拷贝失败:用强制拷贝cp -rf 命令

执行: chroot /mnt/sysinage  不会报错,证明已经修复

     重新启动虚拟机,启动成功


总之:我正确升级Glibc步骤

cd  /opt/idea

tar -zxvf  glibc-2.14.tar.gz

cd /glibc-2.14

mkdir build

cd build

../configure --prefix=/opt/glibc-2.14

make -j4

(find / -name "ld.so.conf"
cp /etc/ld.so.conf /opt/glibc-2.14/etc/)

make install

export LD_LIBRARY_PATH=/opt/glibc-2.14/lib

(echo $LD_LIBRARY_PATH)

cd /lib64

(ll libc.so.6

ll /opt/glibc-2.14/lib/libc-2.14.so)

cp /opt/glibc-2.14/lib/libc-2.14.so /lib64/

unlink /lib64/libc.so.6(或rm -f /lib64/libc.so.6)

ldconfig

ln -s libc-2.14.so /lib64/libc.so.6

(ll libc.so.6

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

原文地址:https://www.cnblogs.com/y-c-m520/p/13824636.html