我在我的一台生产服务器及其非常老旧的 RHEL 4 主机上犯了一个错误。由于最近的“shellshock 漏洞”,我错误地将 bash 从 RHEL5 repo 升级到了错误的版本。
现在我收到了错误-bash: error while loading shared libraries: requires glibc 2.5 or later dynamic linker
。
完整错误:
ssh [email protected]
-bash: error while loading shared libraries: requires glibc 2.5 or later dynamic linker
现在我无法登录服务器,我也尝试使用旧版本的内核重新启动主机,但都不起作用。我尝试将主机重新启动到单用户模式,但也没有用。我完全被这个问题困住了,这对我们来说非常关键。
谢谢,
答案1
您可以执行以下操作
使用控制台选项重新启动主机,然后编辑 grub 以"init=/bin/ksh"
在内核行末尾添加并启动,以便获得 shell
现在挂载 proc 分区
mount -t proc none /proc
重新挂载根分区:
mount -o remount,rw /
删除新的 rpm
rpm -q bash
bash-Old _version
bash-new-version
rpm -e bash-new_version
确认您拥有旧版本
rpm -q bash
bash-Old _version
现在重启
答案2
从 RHEL 4.x 安装媒体启动系统,您应该已准备好该媒体。
在其启动菜单中,启动进入救援模式。
救援模式将会把您的文件系统挂载在/mnt/sysimage
,然后您就可以在那里对其进行操作。
要解决此问题,找到bash
EL4 的 RPM,启动救援环境后下载并重新安装,例如:
cd /mnt/sysimage/var/tmp
wget http://www.example.com/bash-3.0-27.0.1.el4.i386.rpm
rpm --root /mnt/sysimage -Uvh --oldpackage bash-3.0-27.0.1.el4.i386.rpm