更多内容请点击:
Linux学习从入门到打死也不放弃,完全笔记整理(持续更新,求收藏,求点赞~~~~)
http://blog.51cto.com/13683480/2095439
作为centos上的基础软件管理工具,rpm的作用可谓是非常重要,就连备受欢迎的yum工具,底层也是基于rpm来实现的。
也就是说一旦rpm工具顺坏或者被误删除,用yum也无法重新安装rpm。
那么一旦出现此种情况,该如何解决,我们来做个测试。
测试环境: 安装在VMware上的 CentOS Linux release 7.4.1708 (Core)
首先,需要卸载系统上已安装的rpm,如我们所见,想要卸载,仅凭 rpm -e rpm是无法完成卸载的
所以此处需要忽略依赖,强制卸载,我们需要加上--nodeps
rpm -e rpm --nodeps
如图,在此执行rpm,提示no such file or directory
既然rpm已不可用,我们当然不可能用rpm在次安装rpm,当然,基于rpm的来实现的yum也无法完成这个工作
当然,既然是测试实验,当然是早有准备,虚拟机上已经挂好了centos官方安装光盘。
此时我们执行reboot命令,重启,由于接下来需要进入救援模式,所以无法使用ssh远程连接,于是我们直接在VMware虚拟机上操作
这个页面很熟悉,Centos7开机页面,通常这里我们都是直接回车,或者不去理会让系统自己执行开机操作。
不过现在,我们不按回车,而是如图所示,按 “ c“
看到这个界面不要懵逼,我们冷静的输入exit,然后回车
好了,终于又看到光盘引导页面。
其实开机按下 ESC 键,进入bios页面修改默认引到方式,重启,也可以达到这个效果
不过用我们的这种方法,不需要进入bios就能达到这个目的,何乐而不为呢
在此,我们选择第三项,Troubleshooting
接下来选择第二项,Rescue a Centos system,救援模式,接下来一路回车,到如下页面:
键盘输入1之后回车
此处需注意提示信息,
chroot /mnt/sysimage
表示我们原来的根 /,在此处为/mnt/sysimage/ 记清楚之后,按下回车
接下来我们得到了一个bash进程,敲下df 查看以下。
光盘没有自动挂载,所以我们手动挂载一下光盘,先新建临时目录:
mkdir /mnt/cdrom, 接着:
mount /dev/sr0 /mnt/cdrom
挂载成功,我们得到了一个只读的光盘设备,用于恢复数据的数据就在光盘里。
接下来我们直接输入:rpm -ivh /mnt/cdrom/Package/rpm-4,然后Tab键,bash会补全路径
敲下回车
可以看到,安装成功。
为什么这里我们可以使用rpm命令呢?就像我们df看到的一样,我们的root 也就是根,变成了/mnt/sysimage/
换言之,这里的bash并不是我们原来的bash,这里的rpm 也不是被我们强制卸载的那个。而是通过救援模式,调用光盘里的rpm。
一个巧妙的设计,我们重新安装回了rpm。
任务完成,reboot,开机
回到我们熟悉的界面,敲入rpm,看看是不是已经回来了。
好了,rpm,重新归来。
原文地址:http://blog.51cto.com/13683480/2105915