关于升级Glibc时取消了libc.so.6软链接的怎么挽救的问题
1 2 3 4 5 6 7 | 拷贝/lib 64 /libc- 2.12 .so和/lib 64 /libc.so. 6 文件 cp /lib 64 /libc- 2.12 .so /mnt/sysimage/lib 64 /libc- 2.12 .so cp /lib 64 /libc.so. 6 /mnt/sysimage/lib 64 /libc.so. 6 注:如果拷贝失败:用强制拷贝cp -rf 命令 |
事情是这样的。。。。
*问题起源
我本来想在centos6.5中安装IntelliJ Idea来配置编写spark程序的,但是Idea.sh想启动的时候出现了一下错误
1 2 | [hadoop @ hadoop 001 bin]$ ./idea.sh /opt/idea/jbr/bin/java : /lib 64 /libc.so. 6 : version `GLIBC _ 2.14 ' not found (required by /opt/idea/jbr/bin/../lib/jli/libjli.so) |
查看已有的GLIBC发现确实缺少上述版的,最高只支持GLIBC_2.12
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | [hadoop @ hadoop 001 bin]$ strings /lib 64 /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 | 1 .从http : //ftp.gnu.org/gnu/glibc/中下载glibc-2.14.tar.xz解压到某路径下<br>2.进入解压后的glibc-2.14文件夹下,mkdir build创建一个文件夹build,并进入该文件夹下<br>3.<code class="bash comments">../configure --prefix=/usr/local/glibc-2.14</code><br>4.<code class="bash comments">make -j4</code><br>5.<code class="bash comments" highlighted="true">make install<br>6.修改临时变量<br> <code class="bash comments" highlighted="true">export LD_LIBRARY_PATH=/usr/local/glibc-2.14/lib<br>并source使其生效(<code class="bash plain">决不能写在</code><code class="bash plain">/etc/profile</code><code class="bash plain" highlighted="true">文件里,<code class="bash plain">否则会导致某些shell命令执行不了</code></code>)</code></code> |
即类似这样
网络上很多方法基本就是以上这样,就叫你重新idea.sh即可了
但是仅仅这样并不能成功,你再次查看GLIBC最高版也还只是glibc-2.12
所以我想肯定是少了哪些步骤,然后我就看到了这篇
升级glic: 解决"libc.so.6: version 'GLIBC_2.14' not found"问题 https://www.cnblogs.com/kevingrace/p/8744417.html
里面有这样一部分内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 修改/lib 64 /libc.so. 6 的软链接来源,由之前的libc- 2.12 .so修改为libc- 2.14 .so [root @ uatblockchain 01 build] # cd /lib 64 [root @ uatblockchain 01 lib 64 ] # ll libc.so. 6 lrwxrwxrwx 1 root root 12 Apr 8 03 : 50 libc.so. 6 -> libc- 2.12 .so [root @ uatblockchain 01 lib 64 ] # 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 @ uatblockchain 01 lib 64 ] # cp /usr/local/glibc- 2.14 /lib/libc- 2.14 .so /lib 64 / 删除libc- 2.12 .so之前的软链接 [root @ uatblockchain 01 lib 64 ] # unlink /lib 64 /libc.so. 6 或者直接执行 [root @ uatblockchain 01 lib 64 ] # rm -f /lib 64 /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
1 | 进入救援模式Rescue install system可以参考https : //zhidao.baidu.com/question/332470303737144965.html首先我这是VMware虚拟机执行: chroot /mnt/sysinage 不会报错,证明已经修复 |

由于我很早之前下载的镜像文件还好好地在电脑里,很顺利,这样设置后重启客户机,开机时点击鼠标左键,然后快速按下一次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 命令
重新启动虚拟机,启动成功
总之:我正确升级Glibc步骤(root用户操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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_) |
此外,我发现我的centos6.5不能升级到glibc-2.15,否则的话,桌面不能正常显示(终于找到问题,因为我原本以为是因为自己不小心删除了桌面面板的文件什么的)。我只能降回glibc-2.14重启系统才行。
方法如下(root用户操作):
1 2 3 4 5 | export LD_LIBRARY_PATH=/opt/glibc- 2.14 /lib rm -r libc- 2.15 .so ln -s libc- 2.14 .so /lib64/libc.so. 6 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构