急救模式下安装rpm包
-----------------------------------------------------------------------------分割线--起因--------------------------------------------------------------------------------
最近公司做一些变更,在测试机上做操作的时候
yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel
yum安装包的时候报错
libselinux-2.5-11.el7.x86_64 is a duplicate with libselinux-2.2.2-6.el7.i686
网上查了一些,说是版本冲突,需要卸载一个,然后,我把两个都卸载之后,系统出现问题,执行命令的时候报错
ifconfig: error while loading shared libraries: libselinux.so.1: cannot open shared object file: No such file or
只有几个内置的命令可以使用比如cd pwd
重新安装回来肯定是不可能了,所以只能利用急救模式了
-----------------------------------------------------------------------------分割线--完毕--------------------------------------------------------------------------------
背景交代完毕,就看如何操作了,对了,另外找一台服务器查看了一下 libselinux.so是由哪个包安装的
# rpm -qf /usr/lib64/libselinux.so.1
libselinux-2.2.2-6.el7.x86_64
确实是我卸载的那个包没错了
1.机器重启,按F2键进入机器的BIOS模式,选择CD-ROM启动,最后按F10保存退出。
2.从光驱上使用光盘文件做引导启动,选择“Troublesbooting”
3.进入救援模式选择“Rescue a CentOS system”
4.到此,选择“1”的“Continue”。
5.进入后按“Enter”键即可。
6.先使用命令df,看看分区信息,其实这看到的分区信息并不是真正机器上的分区信息,而是光盘的分区信息。
cd /run/install/repo 进入光盘文件所在目录。
cd /mnt/sysimage 进入真正的机器系统根目录。
7.进入光盘的文件目录下,使用rpm命令安装RPM的程序包,在此,特别要注意的是(如下图),后面必须要加上–-root=/mnt/sysimage ,这是使用–-root=指向机器真正的根目录下进行安装,否则直接安装的话是安装到了光盘分区上了。对于--root不懂的,可以自行查一下rpm命令的选项
# cd /run/install/repo/Packages/ # ls libselinux-2* libselinux-2.5-11.el7.i686.rpm libselinux-2.5-11.el7.x86_64.rpm # rpm -ivh libselinux-2.5-11.el7.x86_64.rpm --root=/mnt/sysimage
8.正式启动安装rpm包。等待安装完成后,使用exit命令退出让机器重新启动即可。
9.在机器重新启动完成后,登陆到系统内,系统里的命令可以正常使用了,完毕
参考文档:https://blog.51cto.com/13683480/2105915