【Linux】解决误操作libc.so.6导致的问题,补充:升级glibc注意事项

千万不要轻易动/usr/lib64/libc.so.6。

glibc是Linux系统中最底层的api,Linux几乎所有运行库都依赖glibc。/usr/lib64/libc.so.6属于glibc,在centos7中是个软链接。

一旦误删或误操作libc.so.6,或者glibc新版本不兼容等原因,都可能导致很多命令不可用、不能连接系统、系统崩溃、无法开机等问题。

1、若误删libc.so.6,导致很多命令不能使用,没有关机或重启。

若使用rm或者mv误删或改动过/usr/lib64/libc.so.6,最直接的问题就是很多命令都不能用(包括ls,grep,ln)。

报错信息:error while loading shared libraries:libc.so.6 cannot open shared object file:No such file or directory

幸运的是,没有关机或重启,则赶紧恢复软链接,但此时 ln -s 已经不能使用了,可以使用sln命令恢复软链接。

例如:在/usr/lib64目录下,libc.so.6软链接指向libc-2.17.so。删除libc.so.6软链接,立即报错。

使用sln创建新的软链接,但不是libc-2.17.so,结果无效。恢复libc.so.6软链接,才正常使用。

bash 复制代码
# 切换到库文件目录下
cd /usr/lib64

# 恢复原软链接
sln libc-2.17.so libc.so.6
2、若误删libc.so.6, 且关机 或重启**,导致无法开机。**

若使用rm或者mv误删或改动过/usr/lib64/libc.so.6,又很不巧的关机或重启,最终无法开机,此时已经影响了系统开机的程序。可以尝试使用U盘启动盘,开启系统并修复。

本系统是Window系统中VMware虚拟机centos7,可以使用ISO映像文件进入救援模式修复系统。

第一步、使用CD/DVD(ISO映像文件),开机进入救援模式(rescue)。

第二步、在救援模式(rescue)下,修复系统。

在救援模式下,系统数据存放在/mnt/sysimage目录下。

切换到库文件目录(/mnt/sysimage/usr/lib64)下,恢复libc.so.6软链接。

bash 复制代码
# 切换到系统数据的库文件目录下
cd /mnt/sysimage/usr/lib64

# 恢复原软链接(若ln -s不能使用,则使用sln)
ln -s libc-2.17.so libc.so.6

第三步、修复后,重启(reboot),重新登录。

bash 复制代码
# 重启
reboot
3、 若正在编译安装较高版本的glibc,突然系统中断,导致无法开机。

解决方法同2,只是第二步不同。

在救援模式(rescue)下,修复系统。但不是恢复软链接,软链接并没有手动改动过,查看也并无异常。

而是:

① 在系统数据的库文件目录(/mnt/sysimage/usr/lib64)下,删除正在下载的该版本的glibc相关的文件。

bash 复制代码
​# 切换到系统数据的库文件目录下
cd /mnt/sysimage/usr/lib64

# 删除正在下载的glibc相关的文件(删除之前先查看,以防删错)
rm -rf *2.38*

② 在救援模式的根目录(/)下,创建新目录(/media)挂载光盘(ISO映像,/dev/cdrom)。

bash 复制代码
​# 切换到救援模式的根目录下
cd /

# 创建新目录,用于挂载光盘(ISO映像文件)
mkdir media

# 查看/dev目录下所有文件(其中cdrom为ISO映像文件)
ls /dev

# 挂载光盘(ISO映像文件)
mount /dev/cdrom /media

③ 在挂载目录的rpm包目录(/media/Packages)下,使用rpm安装与glibc相关的RPM包。

bash 复制代码
# 切换到ISO映像的rpm包目录下
cd /media/Packages

# 安装glibc相关的RPM包
rpm -ivh --force --root=/mnt/sysimage glibc-*

补充:升级glibc注意事项:

1、升级glibc前,系统备份。若是VMware虚拟机,关机 拍摄快照(保存升级前系统数据)。

2、仔细查看安装说明文档(解压缩后的目录下的INSTALL文件)。

3、配置编译参数时,尽量指定安装路径为/usr。

bash 复制代码
../configure --prexfix=/usr ...其它配置参数

# 例如:
../configure  --prefix=/usr --disable-profile --enable-add-ons --with-binutils=/usr/bin --with-headers=/usr/include --disable-sanity-checks --disable-werror

4、编译安装前,检测系统。

bash 复制代码
make check

若make check报错,查看INSTALL文件,检查相关依赖包是否符合要求。

查看网页上统计的关于glibc的问题:FAQ - glibc wiki (sourceware.org)

相关推荐
且从容.3 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道3 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达5 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.6 小时前
ubuntu安装flink
linux·ubuntu·flink
数字新视界7 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落7 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨7 小时前
WSL2的安装与使用
linux·wsl
微小的鱼8 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng8 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮9 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频