首页 > 系统相关 >【Linux Ops】如何无痛升级 glibc

【Linux Ops】如何无痛升级 glibc

时间:2024-11-20 14:59:09浏览次数:1  
标签:Ops 安装 glibc 2.38 rpmbuild 源码 Linux rpm

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

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

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

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

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,下面开始编译。

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,安装即可:

cd ~/rpmbuild/RPMS/ && yum install *

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

标签:Ops,安装,glibc,2.38,rpmbuild,源码,Linux,rpm
From: https://www.cnblogs.com/lianyihong/p/18557542

相关文章

  • linux学习day03_linux文件与目录管理
    1、相对路径和绝对路径的区别绝对路径:路径的写法“一定由根目录/写起”,例如:/usr/share/doc这个目录。相对路径:路径的写法“不是由/写起”,例如由/usr/share/doc要到/usr/share/man下面时,可以写成:“cd../man”这就是相对路径的写法啦!相对路径意指“相对于目前工作目......
  • linux下的/dev/shm/及对Oracle 的影响
    一、/dev/shm/介绍:/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。因此在linux下,就不需要大费周折去建ramdisk,直接使用/dev/shm/就可达到很好的优化效果。 /dev/shm/需要注意的一个是容量问题,在linux下,它默认最大为内存的一半大小,使用df-h命令可以......
  • linux之定时任务
    定时任务定时执行的命令或脚本任务1.系统定时任务配置#系统定时任务需要root权限#配置文件:/etc/crontab#语法结构:*****rootcmd或cmd.sh#*的解释*分 0-5901或者写1表示1分钟0表示整点*时0-2300或者写0表示凌晨12点*日1-3......
  • 蓝易云 - Linux系统修改时区日期教程
    在Linux系统中,可以通过以下步骤修改时区和日期:查看当前时区:运行以下命令以查看当前时区:timedatectl​列出所有可用的时区:运行以下命令以列出所有可用的时区:timedatectllist-timezones​修改时区:运行以下命令以修改时区,将 Your_Timezone替换为您希望设置的时区:t......
  • 【Linux 篇】Docker 的容器之海与镜像之岛:于 Linux 系统内探索容器化的奇妙航行
    文章目录:【Linux篇】Docker的容器之海与镜像之岛:于Linux系统内探索容器化的奇妙航行前言安装docker-centos7【Linux篇】Docker的容器之海与镜像之岛:于Linux系统内探索容器化的奇妙航行......
  • docker搭建hadoop集群linuxcentos(为分布式、完全分布式)
    docker搭建hadoop集群linuxcentos(为分布式、完全分布式) 第1章写在前面必读1.1Hadoop生态简单说明说明:hadoop只是一个存储数据的平台,mapreduce是一个计算框架,需要编程人员去编写处理数据的程序。然后hadoop是一个生态,就是说在其上还运行着hbase数据库,sqoop,shark等等工具,这样才......
  • 【Linux合集】二进制安装mysql
    1、二进制安装数据库之--上传或者下载包#本地有二进制包可以rz上传[root@db01~]#rzmysql-5.6.46-linux-glibc2.12-x86_64.tar.gz#没有的可以使用下面的进行网络安装[root@db01~]#wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-5.6.46-linux-glibc2.12-......
  • 【Linux合集之mysql】源码安装mysql
    1、本地留有mysql-5.6.46.tar.gz的包,将包上传至虚拟机[root@db01~]#rzmysql-5.6.46.tar.gz2、安装后面所需要的依赖cmake过程需要的依赖[root@db01~]#yuminstall-ycmakeopensslopenssl-develncurses-develgccgcc-c++初始化过程依赖[root@db01~]#yuminstall......
  • Linux里反引号`和单引号‘注意区分,二者很像;以及双中括号[[]]
    $While[[`seq110|shuf|head-n1`!="1"]];doecho"retry";done问题结果发现:`seq110|shuf|head-n1`是反引号`,不是单引号’1.认成单引号和双引号执行情况:里面是字符不执行test_watch.sh执行bash脚本debug$bash-xtest_watch.sh2.正确表述......
  • 【Linux合集】当我们将运行级别设置为重启时……
    总以为设置系统重启就是重启,哈,我一开始就是这样认为的,但是设置之后就发现自己想错了,设置之后并不会发生任何变化,但问题会出现在你想把虚拟机关闭之后,或者当你重启的时候你就会发现一个很悲催的事情——虚拟机进入了无限的循环重启的地步,怎么办。满头雾水,却又无计可施。别急,教你怎......