centos升级glibc,编译过程及问题注意
Jan 12, 2018
centos升级glibc2.14,编译过程及问题注意
买了一台小鸡搭ss,因为是openvz的机器,无法安装kvm的加速,于是装了个OpenVZ改google bbr的加速。因为glibc版本过低,无法安装,于是升级,此为前提。
特别注意: 请勿在生产环境或者没有备份数据的情况下升级glibc
- 使用源代码方式升级 Glibc 是需要小心考虑的事情,因为整个系统几乎所有应用程序都依赖于原有的动态库,升级的时候,执行”make install”命令会打断旧的动态库链接,改为指向新的库文件。在这个过程中,不同的链接指向新旧不同版本的库文件,很容易导致系统崩溃,崩溃后,一般是无法重新启动的。
安装glibc过程:
查看系统glibc库版本可使用如下命令:
1
$ strings /lib64/libc.so.6 |grep GLIBC_
点击下载glibc2.14, 然后编辑安装:
1
2
3
4
5$ tar -xzvf glibc-2.14.tar.gz && cd glibc-2.14
$ mkdir build // 在glibc-2.14目录下建立build文件夹
$ cd build // 进入build目录
$ ../configure --prefix=/opt/glibc-2.14 // 配置glibc并设置当前glibc-2.14安装目录
$ make && make install // 编译安装glibc-2.14库建立glibc软链
1
2$ rm -rf /lib64/libc.so.6 // 先删除先前的libc.so.6软链
$ ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6Note:
- 删除libc.so.6之后可能导致系统命令不可用的情况, 可使用如下方法解决:
1 | $ LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6 |
- 如果上述更新失败可使用如下命令还原:
1 | $ LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6 // libc-2.12.so 此项是系统升级前的版本 |
- 编译过程可能会出现:Can’t open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory,如下解决:
1 | 缺少了必要的编译文件ld.so.conf。通过find命令找到对应的文件位置。 |