Linux rescue模式解决误删软件依赖

来源:互联网 发布:vb与c#语法区别大吗 编辑:程序博客网 时间:2024/05/02 04:46

  最近在解决phantomjs所需zlib类库版本过低问题时,本打算卸载zlib,重新安装高版本zlib,输入yum remove zlib* -y,直接将依赖zlib类库的组件全都删除,连yum、rpm等安装工具也同时删了,这样就导致安装都无法进行。由于很多基础组件类库等也都删除,因此很多服务也无法重启。
  当时还好ssh可以连接,仍可以通过lrzsz工具往服务器上传输数据,并且make 等工具还在,傻傻的以为可以通过编译安装,但是由于gcc等工具也一并也删除,这就意味着编译安装也无法进行;服务器重启则直接无法启动。
   最后没办法只能通过救援模式下,将误删的软件包重新安装了。具体思路是linux rescue模式挂在本地iso镜像,先将yum、rpm这两个软件安装工具按上,然后再安装其他软件包;系统是老的centos5.6版本,需要磁盘本的iso镜像,因此从网上下载centos5.6 dvd镜像,但是由于iso镜像不同,可能导致在yum安装使出现相关软件的版本不一致,需要解决confict才能安装。
下面是是本次rescue模式下的步骤:

一、进入linux rescue

1.通过U盘启动,输入linux rescue进入
这里写图片描述
2.按照提示选择ok即可
选择语言
选择键盘
3.从此步开始需要选择iso镜像源
由于我们通过U盘启动,因此我们的iso源在”hard drive“上
这里写图片描述
4.选择分区
这里写图片描述
5.加入我们不知道选择哪个分区,我们可以按照提示按”F2”键,进入分区进行浏览
这里写图片描述
通过逐个进入分区,我们可以了解到:
/dev/sdb1是我们做的u盘启动目录,里面有很多目录,其中iso目录下包含centos-5.6-dvd.iso镜像,我们要找的就是这个目录
/dev/sdb4是iso镜像中的软件包相关,可通过挂载设置本地安装源
通过确认后我们”4选择分区“那一步,进行配置:
这里写图片描述
分区选择/dev/sdb1
Directory holding image写/iso
这样就会进入/dev/sdb1分区的/iso目录下找到centos5.6镜像,”OK”后就可以真正进入rescue模式了,按照提示原系统分区挂载在/mnt/sysimage下,通过chroot /mnt/sysimage就可以进行原系统分区了。

二、恢复工作

1.挂在iso镜像
由于我们的

mount /dev/sdb4 /mnt/sysimage/media

2.安装rpm、yum工具

cd /mnt/sysimage/media/Centos#从救援系统向原系统中安装rpm软件/usr/bin/rpm -ivh --replacepkgs --root /mnt/sysimage/media rpm-4.4.2.3-18.el5.x86_64.rpm rpm-libs-4.4.2.3-18.el5.x86_64.rpm#切换到原系统界面chroot /mnt/sysimages/cd /media/Centosrpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpmrpm -ivh yum-metadata-parser-1.1.2-3.el5.centos.i386.rpmrpm -ivh python-elementtree-1.2.6-5.i386.rpmrpm -ivh python-sqlite-1.1.7-1.2.1.i386.rpmrpm -Uvh rpm-python-4.4.2.3-18.el5.i386.rpm安装ptthon-urlgrabber前rpm -Uvh m2crypto-0.16-6.el5.6.i386.rpmrpm -Uvh python-urlgrabber-3.1.0-5.el5.noarch.rpm #提示为urlgrabber依赖#安装YUMrpm -Uvh yum-3.2.22-20.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-13.el5.centos.noarch.rpm

至此yum、rpm工具都已安装到原系统中,下面可以通过yum进行本地源安装了。
3..制作本地镜像源

vim /mnt/sysimage/etc/yum.repos.d/local.repo[DVD-media]name=local sourcebaseurl=file:///mediagpgcheck=0enabled=1

注意:
(1).将CentOS-Base.repo等其他repo文件备份,尽量只保留local.repo文件以免出现影响。
(2).将/var/log/下的yum.log yum.log.1 yum.log.2备份,因为里面记录了我们yum remove的软件,yum clean all 会清除相关日志。

#测试本地yum源是否成功yum list#清楚yum缓存yum clean allyum makecache

4.yum安装软件
根据yum.log的备份中内容,对删除的软件进行重新安装。

更改root密码

安装passwd命令

yum install passwd

执行passwd root提示module is unknown,这是由于缺少了pam相关模块,yum install pam即可,安装完成后可修改密码。

总结

以上只是一个大体恢复步骤,具体情况可能有所出入,例如本次恢复过程中,我这面还出现过以下几个状况:
1.本地yum源的软件包,和原系统之前的软件包有冲突
我是修复没有冲突的包后,系统已经能够正常启动,且网络可以通,这样我就可以通过网络进行yum安装,从而避免了包冲突问题。
2.本地源制作完成后,通过yum list测试,出现”segment fault“错误
之前安装过zlib,并且将libz.so.1 软链到其他高版本的类库上了,重新修改后正常,对于这样的错误,由于类库版本导致,如果不清楚的话,则排查起来很麻烦。

1 0