如何恢复误删除的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
下一篇 2017-08-26

相关推荐

  • 网络管理基础-子网划分及网络配置练习

    1、某公司申请到一个C 类IP 地址,但要连接6 个的子公司,最大的一个子  公司有26 台计算机,每个子公司在一个网段中,则子网掩码应设为?  192.168.100.1 网络位192.168.100 192.168.100.00000000 C类掩码255.255.255.0 192.168.100. 000 00001  …

    Linux干货 2016-09-05
  • OPENSSL加密技术及私有CA的搭建

    加密方式有对称加密 非对称加密 单向加密 对称加密:     加密和加密都用同一个对称密钥,但是,这种加密方法存在一定问题,就是密钥传输时,容易被盗窃。还有密钥管理困难,对称加密的方法:DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5。   非对称加密: 公钥…

    Linux干货 2015-08-17
  • php的serialize序列化和json性能测试

    最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。 在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。 在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize…

    Linux干货 2015-04-07
  • Linux进程查看及管理(2)

    Linux进程查看及管理(2) CentOS5和6的启动流程: Liunx中的启动:kernel和rootfs(根文件系统) kernel:进程管理,内存管理,网络管理功能,驱动程序,文件系统,安全功能(权限模型), rootfs:glibc(lib,lib64) 库:函数集合,function(功能模块)有其调用接口(头文件是对函数功能或调用参数的功能进行…

    Linux干货 2016-08-08
  • N25 第五周博客

      1、显示当前系统上root、fedora或user1用户的默认shell;      ]# egrep "^root\b|^user1\b|^fedora\b" /etc/passwd | cut -d: -f1,7…

    Linux干货 2017-01-04
  • Linux基础目录名称命名法则及功能规定

    Linux中有非常多的目录文件,那么这些目录文件的命令规则,和功能都有那些,今天学习了下,下面是我的学习记录,跟大家分享下。 文件命名规则 (1) 除了/之外,所有字符都合法 (2) 特殊字符如@、#、¥、&、()、-、空格等最好不要使用,当使用空格作为文件名时,执行命令会出错 (3) 避免使用”.”作为文件名的第一个字符,因为在Linux系统中以”…

    Linux干货 2016-08-15