网上关于升级glibc的文章不少,但没有一篇能成功的,本人被坑过无数次,以至后来能避就避,今天自己在虚拟机上实验,终于成功,我把升级过程记录下来,为网友提供完整的升级方法。
升级是在ubuntu下进行的,但是其他系统升级也类似,我的系统版本:
Linux ubuntu 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
准备两个Linux系统, 一个是你要升级glibc的系统B, 另一个A用于glibc升级失败之后恢复,
它能挂载升级失败的系统的根文件系统, 恢复失败的系统.
首先配置系统B,
安装 nfs 服务
配置成 A能以root身份访问B
做法:
服务器B安装 nfs服务
sudo apt-get install nfs-kernel-server
然后启动nfs服务:
sudo /etc/init.d/nfs-kernel-server start
编辑/etc/exports,加入:
/ A_ip(rw,sync,no_root_squash)
然后重启动nfs服务:
sudo /etc/init.d/nfs-kernel-server restart
配好之后 登录系统A
挂载系统B的根文件系统
mkdir /mnt/glibc-upgrade
sudo mount -t nfs B_ip:/ /mnt/glibc-upgrade
1. 登录系统B
下载最新版本的glibc
git clone git://sourceware.org/git/glibc.git
cd glibc
git checkout --track -b local_glibc-2.25 origin/release/2.25/master
2.
mkdir build-glibc
cd build-glibc
../glibc/configure --prefix=/usr
make
make install install_root=~/share/src-glibc-2.25/system_fake_root
ll ~/share/src-glibc-2.25/system_fake_root
查看glibc安装时会修改哪些文件,
将这些文件进行备份(安全起见, 以便升级失败恢复原来的系统, 一定要备份)
我的glibc安装会修改以下文件
xxx@ubuntu:~/share/git-glibc-src/system_fake_root$ ll
total 28
drwxrwxr-x 7 liuwb liuwb 4096 Apr 7 00:26 ./
drwxrwxr-x 5 liuwb liuwb 4096 Apr 7 00:20 ../
drwxr-xr-x 2 root root 4096 Apr 7 00:26 etc/
drwxr-xr-x 2 root root 4096 Apr 7 00:26 lib64/
drwxr-xr-x 2 root root 4096 Apr 7 00:26 sbin/
drwxr-xr-x 8 root root 4096 Apr 7 00:22 usr/
drwxr-xr-x 3 root root 4096 Apr 7 00:23 var/
以上是glibc源代码 make install 会修改的目录
liuwb@ubuntu:~/share/git-glibc-src/system_fake_root$ ll lib64/
total 18768
drwxr-xr-x 2 root root 4096 Apr 7 00:26 ./
drwxrwxr-x 7 liuwb liuwb 4096 Apr 7 00:26 ../
-rwxr-xr-x 1 root root 863537 Apr 7 00:26