误操作 rpm -e --nodeps zlib

  误删缘由:目的是要升级ssh版本,结果好像是冥冥之中有股力量在作祟迫使我粘了一条致死的命令rpm -e --nodeps  zlib就执行了,奇怪的是执行之后根本就全然不知。最后在敲rpm命令时居然报错了:”rpm:error while loading shared  libraries: libz.so.1: cannot open shared object file: No such file or directory“ 纳闷半天上翻命令才发现那条刺眼的命令矗立在那儿.........什么时候敲得?为什么会敲这个?这不是我敲的吧?

  反正是懵了,老大早上刚给的服务器让我升级呢!!!速速找google蜀黍,讲这是ssh的依赖库,它要是没了,yum、rpm、scp、ssh、rsync、ftp、tftp等命令都没法使用了。补救办法是从其他相同系统的服务器上拷一份libz.so.1(后来发现是libz.so.1.2.3)文件上传至此服务器即可(前提是服务器已经安装了lrzsz),屋漏偏逢连夜雨,就是没装!!!没辙了最后乖乖承认错误寻找解决办法,结果被告知那台服务器在外省那边也没运维相关的技术人员,当时差点都以为自己要去出差了。后来老大联系了那边的一个非技术主管去机房通过微信协助我解决这个问题,几经波折最后总算完美补救了,所以想给大家分享下具体解决过程,避免多走弯路。

第一步:刚开始系统都起不来的,所以只能进入单用户模式补救。进入单用户方法:

1、启动的时候,提示“press any key to enter menu”,这时回车。若有加grub密码,需要先按p,输入密码方可进行后面的操作。

出现:    “CentOS (2.6.32-358.e16.i686)”  菜单。
下面有提示:输入'e' to edit the commands before booting.
因此,我们输入 'e'字符,接着的界面会有3个选项出现:
    root (hd0,0)
    kernel /vmlinuz-...
    initrd /initramfs...


2、 选择中“kernel ...”这一行,然后按下"e"键,这时提示:
    <BOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
我们在这行的末尾输入 " single“或者"1” (注意,single前面有个空格),回车。
这将回到3个选项的那个界面(这时第二项依旧处于选中状态),然后按下 'b'


3、然后等待,操作系统启动完成,期间不需要输入密码!命令行显示为:
[root@localhost /]#

第二步:因为目前所有上传文件的命令都无法使用,所以只能使用U盘来上传。

1、从其他服务器拷贝一份libz.so.1.2.3文件存至U盘,然后将U盘插到进入单用户的补救服务器上。

2、查看U盘的分区名

# fdisk -l

可以看到U盘的分区名是/dev/sdc1,所以挂载/dev/sdc1

3、新建挂载目录,并挂载U盘

# mkdir   /upan

# mount  /dev/sdc1  /upan/

4、查看U盘文件

# cd  /upan/

#  ls

5、将libz.so.1.2.3拷贝至/lib64/

# cp  ./libz.so.1.2.3   /lib64/

 6、将libz.so.1.2.3链接为libz.so.1(因为在之前使用rpm报错是:cannot open libz.so.1,其实libz.so.1是libz.so.1.2.3的链接文件,正真缺失的是源文件libz.so.1.2.3)

# ln -s  /lib64/libz.so.1.2.3   /lib64/libz.so.1

7、此时要恢复的内容已完成,现在卸载并拔出U盘

# cd  /    (必须先退回到根目录下,再执行umount命令,不然会报错提示U盘在使用,无法卸载)

#  umount   /dev/sdc1    

8、重启服务器

# reboot

9、测试 rpm 、ssh均可使用,整个修复过程结束。

 

原文地址:https://www.cnblogs.com/wanghongli/p/9259570.html