centos升级glibc2.14,编译过程及问题注意

买了一台小鸡搭ss,因为是openvz的机器,无法安装kvm的加速,于是装了个OpenVZ改google bbr的加速。因为glibc版本过低,无法安装,于是升级,此为前提。
特别注意: 请勿在生产环境或者没有备份数据的情况下升级glibc
  • 使用源代码方式升级 Glibc 是需要小心考虑的事情,因为整个系统几乎所有应用程序都依赖于原有的动态库,升级的时候,执行”make install”命令会打断旧的动态库链接,改为指向新的库文件。在这个过程中,不同的链接指向新旧不同版本的库文件,很容易导致系统崩溃,崩溃后,一般是无法重新启动的。
安装glibc过程:
  1. 查看系统glibc库版本可使用如下命令:

    1
    $ strings /lib64/libc.so.6 |grep GLIBC_
  1. 点击下载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库
  2. 建立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.6
  3. Note

    • 删除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
2
3
4
5
缺少了必要的编译文件ld.so.conf。通过find命令找到对应的文件位置。
$ find / -name "ld.so.conf"
/etc/ld.so.conf
$ cp /etc/ld.so.conf /opt/glibc-2.14/etc/
$ make install
参考链接: