如何恢复误删除的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

相关推荐

  • 马哥教育网络班22期+第7周课程练习 忍者乱太郎喻成

    第七周 1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    我个人比较喜欢使用交互式的分区工具fdisk    我以fdisk为例: &n…

    Linux干货 2016-11-21
  • 马哥教育网络班21期+第六周课程练习

    马哥教育网络班21期+第6周课程练习 [TOC] vim编辑器使用方法总结 vim编辑器: 简介: vi: visual interface,文本编辑器 vim: vi improved,vi的增强版 文本:ASCII,Unicode, 文本编辑器种类: 行编辑器:sed, 全屏编辑器:nano,vi vim:模式化的…

    Linux干货 2016-08-15
  • HAProxy

    HAProxy简介 HAProxy是免费、极速且可靠的用于为TCP和基于HTTP应用程序提供高可用、负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制的web站点。HAProxy还可以将后端的服务器与网络隔离,起到保护后端服务器的作用。HAProxy的负载均衡能力虽不如LVS,但也是相当不错,而且由于其工作在7层,可以对http请求报…

    2017-05-17
  • 2016.08.04学习笔记

    文本管理工具     1.cat:查看文件,读取键盘输入         -A:查看文件所有信息         -n:显示行数   &nb…

    Linux干货 2016-08-08
  • 【N25第六周作业】VIM、crontab、简单脚本

    请详细总结vim编辑器的使用并完成以下练习题 第二周有写过vim的用法,请查看连接: 周期性任务计划:cron 服务程序: cronie:主程序包,提供了crond守护进程及相关辅助工具; 确保crond守护进程(daemon)处于运行状态: CentOS 7: systemctl  status  cron…

    Linux干货 2016-12-27
  • 零距离接触软RAID0和RAID5以及逻辑卷LVM

    一、创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 1、首先手动给虚拟机添加两块硬盘 2、添加硬盘后,无需关机,直接让内核扫描添加的磁盘 [root@centos6 ~]# echo '- – -' >&nbsp…

    Linux干货 2016-09-01