yum安装软件失败报错的解决方法

在CentOS或RHEL下用yum命令安装软件,经常遇到报错的情况。

我摸索出了其中的原理和解决方法,与各位共享。

yum命令在运行时需要读取 /etc/yum.repos.d/目录下的所有后缀为 .repo 的仓库文件,而仓库文件里又写了url网址(比如mirrorlist.centos.org),所以yum是在线安装软件(当然也可以配置为本地安装)。

因年代久远、国外的网址被X、或Linux主机自身网络配置等原因,造成无法访问url而报错。这又分为2种情况:

● 无法解析url为ip地址

● 能解析url,但在具体的路径上找不到元数据文件,而这是安装软件所必须的

对于这2种情况,在安装软件时(例如 yum install httpd)会有2种不同的报错信息。

一、无法解析url为ip地址

报错分析:顶部的英文是:“错误14:无法解析主机:mirrorlist.centos.org;未知错误”,明确指出了错误原因是无法解析mirrorlist.centos.org,对于这种因DNS解析失败导致的错误,yum会中断软件的安装过程,不再解析其它的仓库文件,哪怕它们工作正常且可以从中安装软件。

解决方法:

首先确保Linux主机自身以及外部网络环境无问题,可以访问外网。

如果网络无问题,就根据报错信息找出包含无效 url 的 .repo文件:

cd /etc/yum.repos.d

grep 'http://mirrorlist.centos.org' *.repo

本例找出了多个文件,需要具体分析:

CentOS7-Base-163.repo找出3行,但url之前带有#,说明该文件的url全是注释,所以忽略该文件;

CentOS-fasttrack.repo找出1行,CentOS-x86_64-kernel找出2行,url之前没有#,但cat这2个文件,发现无效仓库url之下的enable=0,仓库是禁用状态,所以也忽略;

1.repo找出2行,分别带#和不带#,编辑该文件:vim 1.repo,找到了http://www.mirrorlist.centos.org之前不带#,且enable=1的仓库,就是这个文件了:

解决方法有3种:

① 编辑1.repo,在所有涉及到http://mirrorlist.centos.org的仓库ID之下写enabled=0  也就是禁用仓库

②1.repo改名为1

③ 删除1.repo

另外,错误提示也给出了4条解决问题的命令格式:

①是临时禁止仓库id,②,③是永久禁止仓库id,④是略过错误,但对于DNS解析失败的情况该命令无效。

把包含字符串“http://mirrorlist.centos.org”的仓库id填入<repoid>字段执行。

二、能解析url,但在具体的路径上找不到元数据文件

比如下图提示在路径http://mirrors.163.com/centos/7/os/x86_64/repodata无法下载repomd.xml:

报错分析:顶部提示HTTP的404错误,而HTTP是应用层协议,这表明网络层能够解析mirrors.163.com的IP地址,但在应用层无法下载xms元数据文件,这会导致软件安装过程中断,哪怕其它仓库工作正常且可以从中安装软件。

解决方法:

报错信息里已经给出解决问题的4条命令(已经填入了仓库id),直接复制和执行即可:

临时禁止仓库:yum --disablerepo=base163 子命令    #其中base163是系统给出的仓库ID,后面必须要跟子命令

永久禁止仓库:yum-config-manager --disable base163

         或者

         subscription-manager repos --disable=base163

忽略错误,使用其它的仓库安装软件:yum-config-manager --save --setopt=base163.skip_if_unavailable=true

比如运行④命令,会在对应 .repo文件的仓库ID下添加skip_if_unavailable = 1,作用是忽略错误,继续从其它仓库安装软件(会输出很多信息,不用理会)。如果执行后安装软件还出现类似的提示是因为有多个问题仓库ID,不停的复制和运行④命令,直到把所有问题仓库都置为忽略。

如果想要知道是哪个 .repo文件错误,可以在 .repo文件里查找由报错信息列出的仓库ID:

grep 'base163' *.repo| sort -t: -k1,1 -u|awk -F: '{print "\033[35m" $1 "\033[0m:" $2}'

如果可以正常从仓库安装软件就重新生成缓存:

yum clean all

yum makecache

### 解决 yum 安装 Docker 时遇到的错误 在 CentOS 上通过 `yum` 安装 Docker 可能会遇到各种依赖性和配置问题。针对提到的警告信息:“warning: container-selinux-2.107-3.el7.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY”,这通常是因为缺少 GPG 密钥验证。 为了确保顺利安装 Docker 并解决上述问题,建议按照以下方法操作: #### 添加官方仓库并导入密钥 首先移除旧版本的 Docker 软件包[^1]: ```bash sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` 接着设置稳定版仓库并更新软件源缓存[^5]: ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ``` 重要的是要确保已正确导入了 Docker 的官方 GPG 密钥来防止之前提到的签名验证失败的问题: ```bash sudo rpm --import https://download.docker.com/linux/centos/gpg ``` 现在可以安全地安装最新版本的 Docker CE: ```bash sudo yum install docker-ce docker-ce-cli containerd.io ``` 完成安装后启动服务并启用开机自启功能: ```bash sudo systemctl start docker sudo systemctl enable docker ``` 最后确认安装成功可以通过运行测试镜像来进行验证: ```python sudo docker run hello-world ``` 如果一切正常,则说明 Docker 已经被正确安装并且能够正常使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值