yum 安装 nfs,rpcbind 出现错误 libc.so.6(GLIBC_2.14)(64bit) is needed by

本文介绍了解决rpm_check_debug错误的方法,通过更换yum源并清理缓存,最终成功安装了nfs-utils等软件包及其依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误信息:

Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
libc.so.6(GLIBC_2.14)(64bit) is needed by libgssglue-0.4-2.el7.nux.x86_64
You could try running: rpm -Va --nofiles --nodigest
Your transaction was saved, rerun it with:
yum load-transaction /tmp/yum_save_tx-2018-02-06-09-30GrY1gL.yumtx

 

解决方法:

删除/etc/yum.repos.d 下的repos源, 重新下载阿里云的 yum源和 epel源 , yum clean all ,yum makecache  

 

重新 yum  install  成功安装 

 

 

Installed:
nfs-utils.x86_64 1:1.2.3-75.el6_9 rpcbind.x86_64 0:0.2.0-13.el6_9.1

Dependency Installed:
keyutils.x86_64 0:1.4-5.el6 libevent.x86_64 0:1.4.13-4.el6 libgssglue.x86_64 0:0.1-11.el6 libtirpc.x86_64 0:0.2.1-13.el6_9
nfs-utils-lib.x86_64 0:1.1.5-13.el6 python-argparse.noarch 0:1.2.1-2.1.el6

Complete!

<think>我们面对的问题是:在离线环境中安装tar命令时,由于系统缺少GLIBC_2.14GLIBC_2.2.5等依赖而失败。需要离线解决方案,因为无法联网。分析:1.tar命令依赖于glibc库,如果系统自带的glibc版本过低,则无法运行高版本编译的tar。2.离线环境意味着不能通过yum或apt-get等在线安装工具直接安装新版本的glibc。3.升级glibc是非常危险的操作,因为系统中很多命令都依赖于glibc,一旦升级失败可能导致系统不可用[^1]。4.引用[3]提到,升级glibc可能导致兼容性问题,需要谨慎。解决方案思路:方案1:在离线环境中安装与当前系统glibc版本匹配的tar程序。-找一个与当前系统glibc版本相同的系统,下载该系统的tar二进制包(包括所有依赖),然后复制到目标机器。-或者,从当前系统的安装介质(如CentOS的ISO)中提取tar的rpm包进行安装。方案2:如果必须使用高版本的tar(比如需要新特性),则考虑离线升级glibc,但风险极高。-需要下载glibc的源代码(如glibc-2.14)以及所有依赖,在离线环境中编译安装。-但要注意,编译安装glibc需要先安装gcc、make等工具链,这些工具链又依赖于当前glibc,形成循环依赖。方案3:使用静态编译的tar程序。-静态编译的tar将glibc库静态链接到可执行文件中,因此不依赖于系统的glibc版本。-可以在另一台相同架构的机器上(可以是虚拟机)静态编译tar,然后将生成的二进制文件复制到目标机器。考虑到安全性和可行性,推荐方案1或方案3。详细步骤:方案1:从系统安装介质中安装tar适用于有系统安装盘(ISO)的情况。步骤:1.挂载系统安装ISO。2.找到tar的rpm包(可能位于Packages目录),例如:tar-1.26-35.el7.x86_64.rpm。3.使用rpm命令安装:`rpm-ivhtar-1.26-35.el7.x86_64.rpm`,并解决依赖(可能需要同时安装依赖的rpm包,如glibc-common等)。如果没有系统安装介质,可以尝试从相同系统版本的在线仓库下载tar及其依赖的rpm包,然后复制到离线机器安装。方案3:使用静态编译的tar步骤:1.在另一台可以联网的相同架构(如x86_64)的Linux机器上(最好与目标系统同版本或更低版本,以保持兼容性),下载tar源代码和静态编译所需的工具。2.编译静态版本的tar:-下载tar源代码:`wgethttps://ftp.gnu.org/gnu/tar/tar-1.34.tar.gz`-解压:`tarxvftar-1.34.tar.gz`-进入目录:`cdtar-1.34`-配置为静态编译:`./configureLDFLAGS="-static"--disable-shared`-编译:`make`3.编译后,生成的`tar`可执行文件在src目录下,使用`filesrc/tar`确认是否为静态链接(应显示staticallylinked)。4.将静态编译的`tar`复制到目标机器,放在某个目录(如/usr/local/bin)并赋予执行权限。注意:静态编译的tar可能较大,因为它包含了所有依赖。关于glibc缺失问题的其他注意事项:1.如果目标机器同时缺少多个glibc符号(如GLIBC_2.14GLIBC_2.2.5),说明需要同时支持多个版本,这通常是因为不同程序依赖不同版本的glibc。但单个glibc库可以包含多个版本的符号(如引用[2]中编译的glibc-2.14就包含了从2.2.5到2.14的符号)。2.然而,升级glibc风险很大,因为它是系统核心库。引用[1]和[3]都强调了升级失败可能导致系统崩溃。3.如果必须升级glibc,请严格按照引用[2]的步骤,在离线环境中编译安装glibc-2.14,并确保编译时开启多版本兼容。但请注意,编译glibc需要先安装gcc、make等,这些工具可能也需要离线安装,过程复杂。因此,优先推荐使用静态编译的tar或从相同系统版本中提取tar安装包。如果选择升级glibc,参考步骤(高风险):1.下载glibc-2.14源码包(如glibc-2.14.tar.gz)并复制到目标机器。2.安装编译依赖:gcc,make,binutils等,这些也需要离线安装。3.编译安装glibc-2.14(注意不要覆盖系统原有的libc.so.6):-通常建议安装到单独目录(如/opt/glibc-2.14),然后通过环境变量LD_LIBRARY_PATH来指定使用。-但是,对于系统命令(如tar)来说,无法通过LD_LIBRARY_PATH来指定(因为tar是suid程序?实际上tar不是suid,但系统命令通常不考虑这种用法),所以这种方法可能不适用。-另一种方法是替换系统libc,但极其危险,不推荐。鉴于升级glibc的高风险,我们强烈建议不要在生产环境中使用此方法,除非别无选择。总结:对于离线安装tar且避免升级glibc,最佳方案是使用静态编译的tar,或者从相同系统版本中获取tar的rpm包进行安装。相关问题:1.如何检查Linux系统中glibc的版本?2.离线安装软件时如何解决依赖问题?3.静态编译和动态编译的区别是什么?在什么情况下使用静态编译?</think>### Linux系统中离线安装tar命令时解决GLIBC依赖缺失的解决方案 当在离线环境中安装`tar`命令时,若出现`GLIBC_2.14`或`GLIBC_2.2.5`等依赖缺失错误,可参考以下三种方案解决: --- #### **方案1:使用静态编译的tar二进制文件(推荐)** **原理**:静态编译的tar将glibc库直接嵌入可执行文件,无需系统提供动态链接库。 **步骤**: 1. 在联网的同架构机器(如x86_64)下载静态版tar: ```bash wget https://ftp.gnu.org/gnu/tar/tar-1.34.tar.gz tar xvf tar-1.34.tar.gz cd tar-1.34 ./configure LDFLAGS="-static" # 启用静态编译 make ``` 2. 将生成的`src/tar`文件复制到目标机器的`/usr/local/bin`: ```bash chmod +x /usr/local/bin/tar ``` 3. 验证版本: ```bash tar --version # 显示静态链接信息 ``` **优点**:安全可靠,避免升级glibc的风险[^1][^3]。 --- #### **方案2:从系统安装介质提取匹配的tar包** **适用场景**:有系统ISO或相同版本RPM仓库。 **步骤**: 1. 检查当前系统glibc版本: ```bash strings /lib64/libc.so.6 | grep GLIBC_ # 确认支持的版本[^1] ``` 2. 从系统ISO或镜像站下载**与glibc版本匹配**的tar RPM包(如CentOS 6.x需`tar-1.23-15.el6.x86_64.rpm`)。 3. 离线安装RPM: ```bash rpm -ivh tar-*.rpm --nodeps # 忽略依赖检查 ``` **注意**:若提示`libc.so.6`缺失,需同步安装对应版本的`glibc`和`glibc-common`包[^1]。 --- #### **方案3:离线编译glibc(高风险,谨慎操作)** **仅当前两种方案无效时考虑**,需严格按步骤操作: 1. 下载glibc源码(如2.14)及依赖: ```bash wget https://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz wget https://ftp.gnu.org/gnu/glibc/glibc-ports-2.14.tar.gz ``` 2. 编译安装到独立目录(**禁止覆盖系统路径**): ```bash tar xvf glibc-2.14.tar.gz cd glibc-2.14 mkdir build && cd build ../configure --prefix=/opt/glibc-2.14 # 指定独立路径 make && make install ``` 3. 通过环境变量调用新glibc运行tar: ```bash LD_LIBRARY_PATH=/opt/glibc-2.14/lib tar -xzvf file.tar.gz ``` **风险提示**: - 直接替换系统`/lib64/libc.so.6`可能导致系统崩溃[^1][^3] - 需确保编译环境(gcc/binutils)与目标系统兼容。 --- ### **关键注意事项** 1. **版本匹配**:通过`strings /lib64/libc.so.6 | grep GLIBC_`确认系统支持的glibc版本[^1][^2]。 2. **依赖链**:安装tar前需检查`ldd $(which tar)`,确保所有动态库存在。 3. **环境隔离**:方案3必须安装到`/opt`等独立目录,避免污染系统库[^2][^3]。 4. **备份恢复**:操作前备份`/lib64/libc.so.6`,故障时可从LiveCD恢复。 > **优先推荐方案1**,静态编译完全规避glibc依赖问题,安全性最高。若必须升级glibc,务必在测试环境验证后再部署[^1][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值