【Linux Ops】如何无痛升级 glibc

打印 上一主题 下一主题

主题 1602|帖子 1602|积分 4806

【环境】kos5.8sp2, kernel5.10
最近工作中需要搭建一个软件环境,其依赖的 glibc 版本较高,因此在安装时给出了以下错误:
  1. xxx: /lib64/libc.so.6: version 'GLIBC_2.33' not found (required by xxx)
复制代码
去查看当前机器的 libc.so 支持的 GLIBC 版本,发现确实太低了:
  1. 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,下面开始编译。
  1. mkdir glibc-2.38 && cd glibc-2.38
  2. # 拆分 src.rpm
  3. rpm2cpio ../glibc-2.38-19.fc39.src.rpm | cpio -div
  4. # 手动拷贝到 rpmbuild/SOURCE
  5. cp -r * ~/rpmbuild/SOURCE/
  6. # 进入源码目录
  7. cd ~/rpmbuild/SOURCE/
  8. # 安装依赖
  9. yum builddep glibc.spec
  10. # 开始编译
  11. rpmbuild -ba glibc.spec --nodebuginfo
复制代码
编译成功后,会在 ~/rpmbuild/RPMS/ 目录下生成 rpm,安装即可:
  1. cd ~/rpmbuild/RPMS/ && yum install *
复制代码
安装成功后,验证一下,glibc 已经更新了:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

八卦阵

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表