如何升级linux系统glibc版本?

如何升级linux系统glibc版本?,第1张

小编提供了如下的四种方法,但是,小编建议大家不要自己更新 glibc 。因为他是系统基础库。他如果出现函数接口变化(版本升级很容易出现这个问题),那么你的整个系统就不能用了。另外,当前最新版本是2.11,比你要安装的要新的多,更新glibc后有可能导致系统崩溃 因为Linux 的依赖关系就是为了防止这种情况而设计的。所以最好还是找相关人士来解决这个问题。

简介

glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。

方法一:

步骤如下:

wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz

wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz

tar -xvf glibc-2.15.tar.gz

tar -xvf glibc-ports-2.15.tar.gz

mv glibc-ports-2.15 glibc-2.15/ports

mkdir glibc-build-2.15

cd glibc-build-2.15

../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

make &make install

make是成功后,build目录下编译出了一个新的libc.so.6 (/glibc-build-2.15/libc.so.6, 我们会发现这实际上也是一个软连接,真实的lib文件时libc.so

cd glibc-build-2.15

ll libc.so.6

查看库文件,可以看到2.12的旧库文件还在,多了2.15版本的库文件,而且软链接文件全部指向了2.15版本

ll /lib64/libc*

此时,查看glibc支持的版本

strings libc.so | grep GLIBC

注:以上图片上传到红联Linux系统教程频道中。

方法二:

编译安装glibc

1.下载glibc

wget http://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz2.下载glibc-linuxthreads

wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz3.解压

tar -zxvf glibc-2.3.2.tar.gz

cd glibc-2.3.2

tar -zxvf ../glibc-linuxthreads-2.3.2.tar.gz

cd ..

./glibc-2.3.2/configure --prefix=/usr --disable-profile --enable-add-ons --libexecdir=/usr/lib --with-headers=/usr/include

make

make install注意点:

1、要将glibc-linuxthreads解压到glibc目录下。

2、不能在glibc当前目录下运行configure

方法三:

1、linux更新包,首选用yum来进行更新(前提是你的linux能上外网),命令如下:

yum install glibc* ----------虽然是安装命令,但是查到已安装后,会自动更新到yum源的最新版本。

2、也可以使用下载的rpm包手工更新的方法,下载最新的glic包然后上传到linux系统安装即可

方法四:

如果是CentOS的话就好啦,直接用命令:yum install glibc 就ok啦!其他的没办法,只能下载或哪里有光盘DVD!

ld和libc库必须同时升级,否则这两者不匹配会引起各种执行程序报错

一、先把新版本的 ld-2.xx.so、libc-2.xx.so 一起放入 /lib 目录,并注意赋予执行权限

二、删掉指向旧版本的软链接 rm ld-linux-aarch64.so.1 libc.so.6

三、这时所有的命令都是不能用的。同时恢复ld-linux、libc的软链接指向新版本

LD_PRELOAD="/lib/libc-2.26.so /lib/ld-2.26.so" /bin/ln -s /lib/ld-2.26.so /lib/ld-linux-aarch64.so.1

LD_PRELOAD="/lib/libc-2.26.so /lib/ld-2.26.so" /bin/ln -s /lib/libc-2.26.so /lib/libc.so.6

这时候,虽然大部分busybox命令都可以执行了,但是像dropbear、dmesg这些部分功能还是不正常的,因为还有 libnss_dns、libnss_file、libpthread、libresolv、libdl、libanl、libcrypt、libm、libnsl、librt、libutil 这些库需要跟libc库同步升级

 要点:

glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。

升级Glibc的忠告:不要在运行中的系统上安装 Glibc,否则将会导致系统崩溃,至少应当将新 Glibc 安装到其他的单独目录,以保证不覆盖当前正在使用的 Glibc。(我就无知的覆盖了,囧!)

解决方法:

赶赴机房吧,幸好我在替换前在目录/lib下保存了原来的库文件(libc-2.5.so.bak),使用Linux系统盘进入“救援模式”,将被替换的2个库文件恢复,重启系统就可以了

系统正常启动了,就交给其他部门的同事去恢复数据吧。

上面就是Linux升级Glibc时系统奔溃的解决方法的介绍了,方法很简单,就要进入救援模式,将替换的库文件恢复回来就可以了,如果你在升级Glibc的时候不覆盖原有的Glibc就不会导致系统奔溃。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/64797.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-28
下一篇2023-02-28

发表评论

登录后才能评论

评论列表(0条)

    保存