【Linux Ops】如何无痛升级 glibc

【环境】kos5.8sp2, kernel5.10

最近工作中需要搭建一个软件环境,其依赖的 glibc 版本较高,因此在安装时给出了以下错误:

复制代码
xxx: /lib64/libc.so.6: version 'GLIBC_2.33' not found (required by xxx)

去查看当前机器的 libc.so 支持的 GLIBC 版本,发现确实太低了:

shell 复制代码
strings /usr/lib64/libc.so.6 | grep GLIBC

而且,难受的是,这个需要安装的软件仅仅提供了一个二进制安装程序,没办法基于其源码做定制化改动。

这样看来,不得不升级当前系统的 glibc 了。

网上有很多有关替换 glibc 的教程,大都是给出了 make && make install 的方案。然而这种方案是及其风险的。 因为 glibc 是系统的核心库之一,几乎所有的用户空间程序都依赖于它。如果不考虑风险直接 make install,那么当新的 glibc 安装成功后,你的系统大概率会挂掉。一个有代表性的现象是,你执行一些诸如 ls 的简单 shell 指令都会报错了。

其实无痛安装 glibc 有更好的办法,那就是基于 glibc 的 rpm 源码包在本地环境编译成 rpm,再进行安装。

我的当前系统为 kos5.8SP2,与 RHEL 同根同源。因此,我找了一个 Fedora 的 glibc 安装包:glibc-2.38-19.fc39.src.rpm,下面开始编译。

shell 复制代码
mkdir glibc-2.38 && cd glibc-2.38

# 拆分 src.rpm
rpm2cpio ../glibc-2.38-19.fc39.src.rpm | cpio -div

# 手动拷贝到 rpmbuild/SOURCE
cp -r * ~/rpmbuild/SOURCE/

# 进入源码目录
cd ~/rpmbuild/SOURCE/

# 安装依赖
yum builddep glibc.spec

# 开始编译
rpmbuild -ba glibc.spec --nodebuginfo

编译成功后,会在 ~/rpmbuild/RPMS/ 目录下生成 rpm,安装即可:

bash 复制代码
cd ~/rpmbuild/RPMS/ && yum install *

安装成功后,验证一下,glibc 已经更新了:

相关推荐
2401_834636992 小时前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
鹏大师运维7 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
鹤落晴春9 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks9 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
bjzhang7511 小时前
CentOS下安装MySQL详解
linux·mysql·centos
Jason_chen12 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld12 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
weixin_5231853214 小时前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
凡人叶枫15 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
云栖梦泽15 小时前
玩转RK3506SDK
linux·嵌入式硬件