更新glibc 2.3到glibc2.5的始末

    工作中遇到扫描出的漏洞需要修复;apache tomcat 的版本是6.0.0.35,目前只有升级apache tomcat这一条路。产品用的coremail公司的邮件产品,在和厂家取得支持后开始了升级,升级操作很顺利,升级过程是用新版的tomcat库文件tomcat/lib/* 替换老tomcat的库文件,这样就不涉及tomcat的配置文件,但是重启tomcat时无法启动tomcat。

     排错查找原因:

root@ha lib]# ldd /home/coremail/lib/libapr-1.so.0
/home/coremail/lib/libapr-1.so.0: /lib/tls/libpthread.so.0: version `GLIBC_2.4' not found (required by /home/coremail/lib/libapr-1.so.0)
libuuid.so.1 => /lib/libuuid.so.1 (0x005dc000)
librt.so.1 => /lib/tls/librt.so.1 (0x0056a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00596000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x009d7000)
libdl.so.2 => /lib/libdl.so.2 (0x00497000)
libc.so.6 => /lib/tls/libc.so.6 (0x0078c000)
/lib/ld-linux.so.2 (0x00a80000)
[root@ha lib]#
[root@ha lib]# ldd /home/coremail/lib/libtcnative-1.so
/home/coremail/lib/libtcnative-1.so: /lib/tls/libpthread.so.0: version `GLIBC_2.4' not found (required by /home/coremail/lib/libapr-1.so.0)
libssl.so.1.0.0 => /home/coremail/lib/libssl.so.1.0.0 (0x00918000)
libcrypto.so.1.0.0 => /home/coremail/lib/libcrypto.so.1.0.0 (0x00111000)
libapr-1.so.0 => /home/coremail/lib/libapr-1.so.0 (0x00c63000)
libuuid.so.1 => /lib/libuuid.so.1 (0x00e1b000)
librt.so.1 => /lib/tls/librt.so.1 (0x002ac000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x003c5000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00adb000)
libdl.so.2 => /lib/libdl.so.2 (0x00e90000)
libc.so.6 => /lib/tls/libc.so.6 (0x003f3000)
/lib/ld-linux.so.2 (0x00a80000)

     一开始把排错的重心都放在了安装 libapr上,但是安装libapr包并设置了环境变量之后还是报错。之后把重心放在了glibc的问题上了,根据报错说明,应该是/home/coremail/lib/libcnative-1.so依赖于Glibc 2.4的支持。但是系统的glibc版本是2.3.

      升级glibc的过程一波三折。

     先是采用了编译安装的方式,下载了源码文件使用.configure --prefix=/usr/local/glibc2.4编译之后 make && make install glibc2.4到了/usr/local/glibc2.4目录上;在/lib库中更换引用之后,系统崩溃(segment fault),于是恢复系统更改回原来的bak连接;这里给大家提个醒,在删除连接文件的时候不要删除,改链接文件的名字为.bak就可以了。方便恢复。

     编译安装的路走不通了,想办法进行rpm安装;(环境无法连接互联网无法yum安装)rpm安装首先要找到正确的rpm包。在网上进行了一番搜索后,我选择下载了centos官网CentOS-5.11-i386-bin-DVD-1of2.iso镜像。这里需要提前知道系统的版本比如 cat /etc/redhat-release;查看系统的位数 ls -l /bin/ls

在镜像中使用rar解开,在CentOS/ 找到了glibc的包。这里上传到csdn上了,有需要的可以下载。

安装使用命令rpm -Uvh 安装,在安装时候提醒了和glibc2.3有冲突;在做好了备份的情况下(使用的是vm,做快照)直接在4个安装文件目录下执行 rpm -Uvh * --force --nodeps

安装后,重启tomcat正常了。确认了的确是glibc版本低的问题,查看glibc的版本

[root@ha lib]# file libc.so.6
libc.so.6: symbolic link to `libc-2.5.so'
[root@ha lib]# 
[root@ha lib]# rpm -qa | grep glibc
glibc-common-2.3.4-2.39
glibc-devel-2.5-123
glibc-headers-2.5-123
glibc-kernheaders-2.4-9.1.100.EL
glibc-2.5-123

不放心,重启系统后依旧正常,更新成功。


你可能感兴趣的:(linux)