Linux 平台: REHL6.7
故障原因: 由于不小心使用命令 yum update nss 误升级了工作平台中 nss 系列工具包导致系统中 yum 和 rpm 命令执行都报错.
由于 yum rpm 命令都不好用使用使用平台将会变得异常艰难, 因此尝试将 nss 降级.
但是由于 nss 升级导致 yum 和 rpm 都不好用
yum history undo 或者 rpm -Uvh -oldpackage 等命令也无法实现
在查阅相关资料之后决定尝试使用救援 Rescue 模式进行 nss 版本降级工作
首先应该进入救援 shell 模式, 下面是进入步骤
将 Linux 系统 ISO 文件制作成 U 盘或者在虚拟机下挂载到虚拟机 DVD 光驱中
接下来选择 "Rescue installed system" 然后按回车确认
选择语言 English 键盘布局 US
4,SetupNetworking 选择 Yes,IP 地址等选择自动就好了, 这样可以使用 yum 源进行恢复
5, 救援模式选择 Continue
6, 选择 OK 进入该模式
7, 选择 shell 模式 Start shell 回车进入, 下图可以看见可以进入 shell 可以输入命令了
接下来是恢复软件包过程
方法 1: 使用 yum undo 命令恢复 (在救援模式下该命令好用)
由于使用光盘启动的救援系统因此需要使用 chroot /mnt/sysimage 命令切换到自己安装的系统上去
输入 yum history 命令查看 yum 安装包记录, 可以知道升级什么软件导致系统异常
找到异常升级步骤后使用 yum history undo N 回滚 yum 操作
如果上步回滚成功那么恭喜, 可以不用执行下面操作了
由于 yum 源中未找到要恢复的 nss 版本, undo 命令失效, 下面要使用终极大法了
终极大法 (使用光盘原始 RPM 包修复)
由于使用光盘启动的救援系统因此需要使用 chroot /mnt/sysimage 命令切换到自己安装的系统上去 (前面敲过该命令可以不使用)
创建目录 cd mnt ; mkdir media
挂载光盘文件到 media 目录下 mount /dev/dvd media, 挂载后 ls 查看文件夹如下图:
RPM 安装包存放在 Packages 文件夹下 cd Packages;ls 可以看见系统所有的 rpm 包
接着查看要修复的软件包使用命令
rpm -Uvh -0ldpackage -nodeps xxx.rmp 修复
--nodeps 可以先不使用 如果有相应的依赖包的需要使用该参数忽略依赖
6, 使用 rpm -qa | grep xxx 查看软件版本是否正确, 确认没问题后退出救援重新载入系统
恭喜! 程序到此修复成功,
来源: https://www.cnblogs.com/HiramYe/p/10850578.html