如何恢复误删除的rpm包命令
在linux学习过程中,我们会遇到各种各样的问题,当然,如果能够将遇到的问题一一解决也是非常开心的,因为在解决问题的过程中我们的专业技能也得到了很大的提升。最近的测试中遇到了一个平时很少接触的问题:如何恢复误删除的rpm包命令。所以觉得有必要写下来,以防止下次出现类似的问题而不会解决。
首先模拟卸载rpm
rpm -e –nodeps 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)模式的本质:
只是一个带shell的Linux运行环境,借助它可以通过mount和chroot进入要修复的系统
解决方法:
<
p style=”text-indent:2em”>
- 有Linux启动盘(或iso文件),系统是RHEL系统的:
- 用安装光盘或者硬盘安装的方式进入安装界面:在shell 中输入 Linux rescue
- 然后根据提示选择语言和键盘格式
- 选择是否配置网卡:一般系统到了要rescue了,网络也就不需要了,所以可以选择跳过网卡配置,当然你如果需要也可以选择是,具体设置过程和安装时一样
- 选择是否让系统查找硬盘上的RHEL系统,选择继续。
- 硬盘上的系统已经被找到并挂载在/mnt/sysimage 下
-
按提示chroot
/mnt/sysimage,之后你就可以已经在你的要被拯救的系统下了 - grub挂了的:grub-install /dev/hdxx
-
配置文件改错的:vi
/etc/fstab vi /etc/inittab -
软件包被毁的:rpm
-F xxx.rpm -
完成修复工作后,exit命令退出chroot,exit退出rescue
shell 系统重启 - 有Linux启动盘(或iso文件),系统是非RHEL系统(如Debian)的:
- 前3步与上述方法1一致
- 第4步时,rescue程序会找不到硬盘上的系统,所以我们选择“跳过“,直接进入shell
- 新建文件系统挂载点,进入系统磁盘分区
-
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的第6-7步,做相应操作即可
- 无Linux启动盘(或iso文件):
- 系统启动时,按任意键进入grub选择界面
- 选择需要启动的Linux系统,按“e”进入编辑界面
- 选择kernel行,按“e”进入核心启动模式编辑界面
- 在kernel行的最后加上“init=/bin/bash”,按回车键(Enter),然后按“b”进行重新引导
-
引导系统会得到一个bash
shell,但进入的系统是read-only的,需使用fsck检查系统
1
2
|
fsck -a/dev/hdaX
# 处理根分区,X是根分区号,如hda2
|
- 将系统挂载成read-write的:mount / -o remount,rw
- 进行系统文件修改,或其他操作
- 在修复好系统后将系统重新挂载成ro的,就可以安全重启了:mount / -o remount,ro
4、进入单用户模式(适用于忘记root密码的):
- 前3步与方法3一致
- 第4步,需在kernel行的最后加上“single”或“s”,按回车键(Enter),然后按“b”进行重新引导
- 输入passwd修改root密码
- 输入init 6重新启动系统即可
(参考资料:http://blog.csdn.net/zhubinqiang/article/details/38331417)
下面将具体演示rpm安装过程,稍复杂:
1. 重启虚拟机进入救援模式(本人使用的是虚拟机)
2.进入救援模式后df看下光盘有没有挂载,没有挂载则手动挂载
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
3.安装rpm
#进入光盘的Packages目录执行
rpm -ivh
/mnt/cdrom/Packages/rpm.XXX.rpm –root=/mnt/sysimage
#切换到原系统的根目录下
cdroot /mnt/sysimage
#测试rpm是否成功安装
rpm
#重启
reboot
注意:
1、救援模式原系统挂载在/mnt/sysimage下,安装时须制定参考的根目录
2、基本命令不要随便卸载,否则服务器重启可能带来不可预知的问题
原创文章,作者:poetic snow,如若转载,请注明出处:http://www.178linux.com/85409