更多内容请点击:

          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是无法完成卸载的


        实战作业1--救援模式下安装-rpm命令_centos


        所以此处需要忽略依赖,强制卸载,我们需要加上--nodeps

        rpm -e rpm --nodeps


        实战作业1--救援模式下安装-rpm命令_rpm_02

        

        如图,在此执行rpm,提示no such file or directory

        既然rpm已不可用,我们当然不可能用rpm在次安装rpm,当然,基于rpm的来实现的yum也无法完成这个工作

        

        当然,既然是测试实验,当然是早有准备,虚拟机上已经挂好了centos官方安装光盘。

        此时我们执行reboot命令,重启,由于接下来需要进入救援模式,所以无法使用ssh远程连接,于是我们直接在VMware虚拟机上操作

       

        实战作业1--救援模式下安装-rpm命令_救援模式_03


        这个页面很熟悉,Centos7开机页面,通常这里我们都是直接回车,或者不去理会让系统自己执行开机操作。

            

        不过现在,我们不按回车,而是如图所示,按 “ c“


        实战作业1--救援模式下安装-rpm命令_rpm_04


        看到这个界面不要懵逼,我们冷静的输入exit,然后回车


        实战作业1--救援模式下安装-rpm命令_rpm_05


        好了,终于又看到光盘引导页面。


        其实开机按下 ESC 键,进入bios页面修改默认引到方式,重启,也可以达到这个效果

           

        不过用我们的这种方法,不需要进入bios就能达到这个目的,何乐而不为呢


        在此,我们选择第三项,Troubleshooting


        实战作业1--救援模式下安装-rpm命令_软件包安装_06


        接下来选择第二项,Rescue a Centos system,救援模式,接下来一路回车,到如下页面:


        实战作业1--救援模式下安装-rpm命令_rpm_07


        键盘输入1之后回车


       实战作业1--救援模式下安装-rpm命令_救援模式_08

        此处需注意提示信息,

                chroot /mnt/sysimage

        表示我们原来的根 /,在此处为/mnt/sysimage/    记清楚之后,按下回车


        实战作业1--救援模式下安装-rpm命令_救援模式_09


        接下来我们得到了一个bash进程,敲下df 查看以下。


        光盘没有自动挂载,所以我们手动挂载一下光盘,先新建临时目录:

                mkdir   /mnt/cdrom,    接着:

                mount  /dev/sr0 /mnt/cdrom


        实战作业1--救援模式下安装-rpm命令_centos_10

        

        挂载成功,我们得到了一个只读的光盘设备,用于恢复数据的数据就在光盘里。

    

        接下来我们直接输入:rpm -ivh /mnt/cdrom/Package/rpm-4,然后Tab键,bash会补全路径

        

        敲下回车


        实战作业1--救援模式下安装-rpm命令_rpm_11


        可以看到,安装成功。


        为什么这里我们可以使用rpm命令呢?就像我们df看到的一样,我们的root 也就是根,变成了/mnt/sysimage/


        换言之,这里的bash并不是我们原来的bash,这里的rpm 也不是被我们强制卸载的那个。而是通过救援模式,调用光盘里的rpm。

    

        一个巧妙的设计,我们重新安装回了rpm。


        任务完成,reboot,开机


        实战作业1--救援模式下安装-rpm命令_centos_12


            回到我们熟悉的界面,敲入rpm,看看是不是已经回来了。


          好了,rpm,重新归来。