如何恢复误删除的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)
上一篇 2017-08-26 16:23
下一篇 2017-08-26 16:51

相关推荐

  • 高级文件系统管理

    高级文件系统管理 一、如何创建新的swap分区  答:1.在/dev/sdc上创建新的分区。并使得ID为82的linux swap;类型。   2.创建文件系统 mkswap  -L  SWAP_SDC1  /dev/sdc1     3.在/etc/fstab中进行修改   4…

    Linux干货 2016-08-30
  • 数组详解

    数组 变量:存储单个元素的内存空间 数组:存储多个元素的连续的内存空间,相当于多个变量的集合          数组名:整个数组只有一个名字     数组索引:编号从0开始,属于数值索引     &n…

    Linux干货 2016-08-24
  • LINUX下的RPM应用

    一 前言 在进入RPM的应用前,关于可执行程序的一些基本知识有必要说明一下: 1 ABI:application binary interface,这是应用程序与系统间的协议,大家都知道同一个程序在不同的操作系统平台可能会无法执行,很大程度上就是因为ABI的不同,因此,对于可执行程序,选择对应操作系统平台是第一步 2 API:application prog…

    Linux干货 2017-04-17
  • N25第8周作业

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;      不在线的主使用红色显示; #!/bin/bash ipnet=172.20.51. trap ‘trap_action’ INT trap…

    Linux干货 2017-02-22
  • 正则表达式30分钟入门教程

    来园子之前写的一篇正则表达式教程,部分翻译自codeproject的The 30 Minute Regex Tutorial。 由于评论里有过长的URL,所以本页排版比较混乱,推荐你到原处查看,看完了如果有问题,再到这里来提出. 一些要说的话: 如果你没有正则表达式的基础,请跟着教程“一步步来”。请不要大概地扫两眼就说看不懂——以这种态度我写成什么样你也看不…

    2015-03-12