抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

[toc]

总结glibc的升级操作

遇到的执行程序报错

fastp.sh 的时候报下面的错,其他节点都没问题
fastp: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by fastp)
fastp: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /zlib/lib/libz.so.1)

在操作之前最好先备份 /lib64/libc.so.6 和它对应指向的链接文件

处理过程

注: 操作服务器的时候,一定要把这个节点从集群中去除。确保不影响业务的使用

# cat /etc/redhat-release 
CentOS release 6.5 (Final)
# strings /lib64/libc.so.6 |grep GLIBC_ 
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE

由上面的信息可以看出系统是CentOS 6.5,最高支持glibc的版本为2.12,而研发程序要2.14版本,所以需要升级。

下载软件并升级

# wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz 
# wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz 
# tar -xvf  glibc-2.14.tar.gz 
# tar -xvf  glibc-ports-2.14.tar.gz
# mv glibc-ports-2.14 glibc-2.14/ports
# mkdir glibc-2.14/build
# cd glibc-2.14/build 
# ../configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
# make
# make install

遇到的问题

这个时候可能遇到以下问题,千万不要断开ssh 执行以下命令进行补救

# LD_PRELOAD=/lib64/libc-2.14.so 
# rm -f /lib64/libc.so.6
# ln -s /lib64/libc-2.14.so /lib64/libc.so.6

这时候再看看系统命令还能否都正常使用

如果断开了ssh 的情况下

如果断开了ssh 只能进系统救援模式进行补救了;
重启,(single/1)单用户模式,/bin/bash,enforcing=0,selinux=0 都是无济于事的,因为它涉及的库是libc.so.6必需的,重启后会报内核恐慌Kernel panic – not syncing: Attempted to kill init;
因此进入救援模式进行补救。

  1. 连接dell服务器远程控制台,映射本地镜像文件到dell服务器;
  2. 启动项默认调整为光盘镜像启动;
  3. 进入救援模式Rescue installed system;
  4. 选择语言和键盘用English、 us;
  5. 出现网络设置不需要配置;
  6. 挂载/mnt/sysimage 选用Continue;
  7. 发现磁盘,选择yes;
  8. 启用shell登录;
  9. cd /mnt/sysimage 目录;
  10. rm -f /lib64/libc.so.6 cd /lib64 && ln -s libc-2.14.so libc.so.6;
  11. chroot /mnt/sysimage 切换根目录测试系统是否无误;
  12. 重新启动系统。

评论