如何恢复误删除的rpm包命令

如何恢复误删除的rpm包命令

linux学习过程中,我们会遇到各种各样的问题,当然,如果能够将遇到的问题一一解决也是非常开心的,因为在解决问题的过程中我们的专业技能也得到了很大的提升。最近的测试中遇到了一个平时很少接触的问题:如何恢复误删除的rpm包命令。所以觉得有必要写下来,以防止下次出现类似的问题而不会解决。

首先模拟卸载rpm

rpm -e –nodeps rpm

 如何恢复误删除的rpm包命令

由于yum依赖于rpm,所以yum也无法正常使用

 yum list

 error: Unable to open /usr/lib/rpm/rpmrc for reading:
No such
file or directory.

error: no dbpath has been set

 error: cannot open Packages database in /%{_dbpath}

 CRITICAL:yum.main:

 Error: rpmdb open failed

 出现这样的情况就需要进入救援模式,重新为当前系统安装rpm命令包。不同的环境进入救援模式的方法也不尽相同,这里参考了部分资料。进入救援模式的四种方法如下:

 适用场景:

 当误操作修改系统启动文件/etc/fstab, /etc/rc.d/rc.sysinit时,就会造成系统启动时读取磁盘或初始化环境失败,导致Linux无法正常启动,此时就可以借助linux的救援模式临时进入系统,进行文件修改,纠正错误

 救援(rescue)模式的本质:

 只是一个带shellLinux运行环境,借助它可以通过mountchroot进入要修复的系统

 解决方法:

<

p style=”text-indent:2em”>

  1. Linux启动盘(或iso文件),系统是RHEL系统的:
    1. 用安装光盘或者硬盘安装的方式进入安装界面:在shell 中输入 Linux rescue
    2. 然后根据提示选择语言和键盘格式
    3. 选择是否配置网卡:一般系统到了要rescue了,网络也就不需要了,所以可以选择跳过网卡配置,当然你如果需要也可以选择是,具体设置过程和安装时一样
    4. 选择是否让系统查找硬盘上的RHEL系统,选择继续。
    5. 硬盘上的系统已经被找到并挂载在/mnt/sysimage
    6. 按提示chroot
      /mnt/sysimage
      ,之后你就可以已经在你的要被拯救的系统下了
      1. grub挂了的:grub-install /dev/hdxx
      2. 配置文件改错的:vi
        /etc/fstab vi /etc/inittab
      3. 软件包被毁的:rpm
        -F xxx.rpm

    7. 完成修复工作后,exit命令退出chrootexit退出rescue
      shell
      系统重启

  2. Linux启动盘(或iso文件),系统是非RHEL系统(如Debian)的:
    1. 3步与上述方法1一致
    2. 4步时,rescue程序会找不到硬盘上的系统,所以我们选择跳过,直接进入shell
    3. 新建文件系统挂载点,进入系统磁盘分区
      1.  



        1

        2

        3

        4

        5

        6

        7

        8

        9

        10

        11

        假设要拯救的为debian 系统,系统分区部署为:

        /dev/hda1 /boot分区

        /dev/hda5 /分区

        /dev/hda6 swap分区

        ==================================================

        # fdisk -l (查看分区情况)

        # mkdir /mnt/Linux

        # mkdir /mnt/Linux/boot (根据fdisk -l 得到的信息创建目录)

        # mount -t ext3 /dev/hda5
        /mnt/Linux

        # mount -t ext3 /dev/hda1
        /mnt/Linux/boot
        (挂载硬盘上的文件系统)

        # chroot /mnt/Linux chroot 改变工作系统)

    1. 继续方法1的第6-7步,做相应操作即可

  3. Linux启动盘(或iso文件):
    1. 系统启动时,按任意键进入grub选择界面
    2. 选择需要启动的Linux系统,按“e”进入编辑界面
    3. 选择kernel行,按“e”进入核心启动模式编辑界面
    4. kernel行的最后加上“init=/bin/bash”,按回车键(Enter),然后按“b”进行重新引导
    5. 引导系统会得到一个bash
      shell
      ,但进入的系统是read-only的,需使用fsck检查系统
      1.  



1

2

fsck -a/dev/hdaX

# 处理根分区,X是根分区号,如hda2

    1. 将系统挂载成read-write的:mount / -o remount,rw
    2. 进行系统文件修改,或其他操作
    3. 在修复好系统后将系统重新挂载成ro的,就可以安全重启了:mount / -o remount,ro

4、进入单用户模式(适用于忘记root密码的):

    1. 3步与方法3一致
    2. 4步,需在kernel行的最后加上“single”“s”,按回车键(Enter),然后按“b”进行重新引导
    3. 输入passwd修改root密码
    4. 输入init 6重新启动系统即可

(参考资料:http://blog.csdn.net/zhubinqiang/article/details/38331417

下面将具体演示rpm安装过程,稍复杂:

 1.  重启虚拟机进入救援模式(本人使用的是虚拟机)

 如何恢复误删除的rpm包命令        如何恢复误删除的rpm包命令如何恢复误删除的rpm包命令如何恢复误删除的rpm包命令如何恢复误删除的rpm包命令如何恢复误删除的rpm包命令

 

2.进入救援模式后df看下光盘有没有挂载,没有挂载则手动挂载

 mkdir /mnt/cdrom

mount  /dev/sr0 /mnt/cdrom

 如何恢复误删除的rpm包命令

3.安装rpm

#进入光盘的Packages目录执行

rpm -ivh
/mnt/cdrom/Packages/rpm.XXX.rpm –root=/mnt/sysimage

如何恢复误删除的rpm包命令

#切换到原系统的根目录下

 cdroot /mnt/sysimage

 #测试rpm是否成功安装

rpm

    如何恢复误删除的rpm包命令

#重启

reboot

注意:

1、救援模式原系统挂载在/mnt/sysimage,安装时须制定参考的根目录 
   2、基本命令不要随便卸载,否则服务器重启可能带来不可预知的问题

 

原创文章,作者:poetic snow,如若转载,请注明出处:http://www.178linux.com/85409

(2)
poetic snowpoetic snow
上一篇 2017-08-26 16:23
下一篇 2017-08-26 16:51

相关推荐

  • LVM的创建与管理

    一、基本概念     1、LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。     2、why:通常在安装Linux系统的时候对磁盘进行一盘的分区,一旦日后分区或整个磁盘的空间…

    Linux干货 2016-06-22
  • Linux系统上获取命令的帮助信息方法

    当我们在操作linux时忘记相关命令的用法时,可以使用man 命令或者命令 -h来查询该命令的用法; man文档共有9个章节 1:所有用户可以操作的指令或可执行文件 2:系统核心调用的函数与工具 3:子调用,常用的函数与函数库 4:设备,硬件文件说明,通常是/dev/的文件 5:文件格式,配置文件或者是某些档案的格式 6:游戏相关 7:杂项,例如linux文…

    Linux干货 2018-03-04
  • 编译安装httpd-2.4.9及新特性详解

    前言 前面我们讲解了httpd在CentOS6上(httpd-2.2)的相关功能配置,而CentOS7上采用了httpd-2.4的版本,那么httpd-2.4增加了哪些特性呢?接下来让我们在CentOS6.6上手动编译安装一下httpd-2.4.9,看一下和httpd-2.2有什么不同,顺便补充说一下httpd的其它功能。 环境及新特性介绍 环境介绍 系统环…

    Linux干货 2015-04-15
  • class17 网络管理(二)

    IP 地址 它们可唯一标识IP网络中的每台设备 每台主机(计算机、网络设备、外围设备)必须具有唯一的地址           IP 地址由两部分组成:     • 网络ID:   …

    Linux干货 2016-09-06
  • sed对比grep之理解

    sed对比grep之理解 很多时候回车按下,没有结果,或是报错。 检查发现都是低级错误,关键是习惯刚学完grep,有写习惯没改过来。 sed语法很重要。script语法写对了,就成功了一大半,剩下的就是正则表达式的问题了。 sed与grep的区别是 grep是个行过滤器,筛选符合条件的行。也可以只显示每行匹配到的文本(-o选项),不对文本进行编辑,只是显示查…

    Linux干货 2016-08-10
  • centos系统中常用的命令

    日志文件说明:  /var/log/message      系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一   /var/log/secure      &nb…

    Linux干货 2016-06-28