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

  最近在解决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/Centos
rpm -ivh python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivh yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm
rpm -ivh python-elementtree-1.2.6-5.i386.rpm
rpm -ivh python-sqlite-1.1.7-1.2.1.i386.rpm
rpm -Uvh rpm-python-4.4.2.3-18.el5.i386.rpm
安装ptthon-urlgrabber前
rpm -Uvh m2crypto-0.16-6.el5.6.i386.rpm
rpm -Uvh python-urlgrabber-3.1.0-5.el5.noarch.rpm #提示为urlgrabber依赖
#安装YUM
rpm -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 source
baseurl=file:///media
gpgcheck=0
enabled=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 all
yum 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 软链到其他高版本的类库上了,重新修改后正常,对于这样的错误,由于类库版本导致,如果不清楚的话,则排查起来很麻烦。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值