当你手贱删除了zlib
不管是出于什么原因删除了zlib,我就是单纯安装完zlib后发现不是自己要的版本,实际应该安装zlib-devel,然后干的蠢事顺手删除了zlib,因为删不掉还特意查了一下
rpm -e --nodeps xx
当时其实作者就有说明会引起系统崩溃,但是我没有太在意,因为就像更新系统一直都懒得做备份一样
然后悲剧出现了,不管怎么样都使用不了rpm sudo su
等等一大批命令,同时在图形界面中也没有任何软件能够打开了。因为无法获得root权限,所以也无法传输文件回到lib64
里面。
sudo: error in /etc/sudo.conf, line 19 while loading plugin "sudoers_policy"
sudo: unable to load /usr/libexec/sudo/sudoers.so: libz.so.1: cannot open shared object file: No such file or directory
sudo: fatal error, unable to load plugin
刚开始的想法
肯定是重新把软件安装回去,但是折腾了半天还是没有办法在没有root权限的情况下,将软件安装回去万事大吉,即使是make install
也会卡在权限问题上
搜索了一段时间后
发现了一篇非常救命的文章,主要他和我碰到的事情差不多,其他人的大部分只是libz.so.1
出现了一点问题,而不是zlib完全卸载的系统问题,当时根本想不到一个解压用的软件居然会导致整个系统的崩溃。
这就是那篇文章的地址https://blog.csdn.net/weixin_46941625/article/details/109404274
但是
虽然有了一个基本的思路,但是我发现,他直接用u盘传输文件的方法对我来说不太可行,因为即使是mount
也需要root权限,可以说没有权限的情况下基本上是寸步难行,更别说我还好留了几个shell窗口,因为我发现假如zlib被卸载以后,xshell和图形化界面的终端也同样是出于不可用的状态。
所以
- 当你遇到这个问题之后,不要关机,不要关机,不要关机,应该立马去你的模拟机上重新安装一个相似版本的系统,然后取出
/lib64/libz.so.1.*
并且将他们尽量传输到服务器根目录上,我的文件传输到了home上,进入救援模式后chroot /mnt/sysimage
后就可以出现home目录了。 - 如果无法传输文件的话,例如我使用的是rocky8,那么我就再使用Rufus制作一个rocky8的启动盘,然后将上面提到的
libz.so.1.*
文件放入u盘当中,启动救援模式,挂载u盘,cp
文件到lib64
里和上面的文章一样了。 - 这里详细参考
https://www.cnblogs.com/linagcheng/p/15648682.html
https://www.cnblogs.com/chenlifan/p/13442291.html