centos6服务器升级glibc失败后操作系统命令不能执行处理
Linux执行命令报错:error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
一.故障现象
在源码安装NGINX的过程中,提示sbin/nginx: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by sbin/nginx),考虑升级glibc,升级后提示error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument。截图如下
升级glibc步骤命令,执行如下操作后出现故障。
1.# 查看版本,发现仅支持到2.12
strings /lib64/libc.so.6 |grep GLIBC
cd /opt
wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build && cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install
# 编译完成后,将libc-2.14.so拷贝到/lib64目录下(本机环境为CentOS-6 64位系统)
cp /opt/glibc-2.14/lib/libc-2.14.so /lib64/
# 软链到
ln -sf /lib64/libc-2.14.so /lib64/libc.so.6
-----------------------------------
二.处理思路
glibc
glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc;它本身也提供了许多其它一些必要功能服务的实现;
libc.so.6
libc.so.6是一个链接到glibc的软链接;
对glibc的升级其实是对libc.so.6这个库的更改;
libc.so.6删除之后会导致系统很多命令的失效,所以对libc.so.6的更改要小心小心再小心,很容易将系统搞崩溃;
查看libc.so.6的版本
需要知道libc.so.6这个库在哪个位置,一般是/lib、/lib64、/usr/lib、/usr/lib64这四个文件夹下
用strings命令查看版本号;
find / -iname libc.so.6
strings /lib/libc.so.6 | grep GLIBC_
三.处理思路
升级libc.so.6
两种方法升级,一种是通过rpm包升级,另外一种是通过编译glibc,然后将生成的库链接到libc.so.6上,通过rpm包对centos6.x的32位系统的升级;下载地址:Index of /results/mosquito/myrepo-el6/epel-6-i386/glibc-2.17-55.fc20/
首先需要有这四个rpm包:glibc-2.17-55.el6.i686.rpm、glibc-common-2.17-55.el6.i686.rpm、glibc-devel-2.17-55.el6.i686.rpm、glibc-headers-2.17-55.el6.i686.rpm
然后依次安装这四个包:
rpm -Uvh glibc-2.17-55.el6.i686.rpm
rpm -Uvh glibc-common-2.17-55.el6.i686.rpm
rpm -Uvh glibc-devel-2.17-55.el6.i686.rpm
rpm -Uvh glibc-headers-2.17-55.el6.i686.rpm
通过rpm包对centos6.x的64位系统的升级包下载地址
Index of /results/mosquito/myrepo-el6/epel-6-x86_64/glibc-2.17-55.fc20/
四.rpm等命令执行不了的处理
如果没有预先的升级好gcc,都会出现升级失败的问题。当然,一旦升级失败,系统都会出现如下状态:
许多简单的命令都无法使用,此时必须谨记:不能断开当前shell连接,以centos6.7系统为例,执行以下命令:
LD_PRELOAD=/lib64/libc-2.12.so
ln -sf /lib64/libc-2.12.so /lib64/libc.so.6
即可恢复。其他的系统或者系统已经进行过libc升级的,请使用另外一台类似的机器进行类比,找到/lib64/libc.so.6软链接的对象,进行修改即可。
更多推荐
所有评论(0)