yum 错误“无法检索存储库的金属链接:epel。请验证其路径并重试”更新 ContextBroker
Posted
技术标签:
【中文标题】yum 错误“无法检索存储库的金属链接:epel。请验证其路径并重试”更新 ContextBroker【英文标题】:yum error "Cannot retrieve metalink for repository: epel. Please verify its path and try again" updating ContextBroker 【发布时间】:2014-12-31 07:42:51 【问题描述】:我正在尝试使用命令 yum install contextBroker 更新 Orion ContextBroker。不幸的是,我收到以下错误:
加载的插件:fastestmirror、refresh-packagekit、安全加载
缓存主机文件的镜像速度
错误:无法检索存储库的金属链接:epel。请验证 它的路径,然后再试一次
可能出了什么问题?
【问题讨论】:
建议的故障排除步骤:您的系统可以curl -v https://mirrors.fedoraproject.org
吗?
所选择的答案是一种不能解决根本问题的解决方法,实际上包安装可能会继续失败。我建议取消选择最佳答案,让投票计数将答案排序为对大多数人有用的答案。
【参考方案1】:
您只需要更新 ca-certificates 包。在此之前,只需禁用所有失败的 https 回购。 这就是为什么使用评论镜像列表或使用 http 而不是 https 的解决方案也可以工作的原因。
例如,如果您只需要禁用 epel repo:
yum --disablerepo=epel -y update ca-certificates
这也将有助于 wget、curl 和其他任何使用 SSL 证书的东西。
【讨论】:
这应该被接受为正确答案,因为它可以诊断问题的真正根源,而不仅仅是提供解决方法。 我已经在 CentOS 6.5 bento box 上对此进行了测试,它在运行yum clean all && yum makecache
时确实让事情变得更加可靠。但是,它有时仍然会失败。向我的脚本添加重试使其更加可靠。我怀疑有些镜像不可靠,重试可以让另一个镜像正常工作。所以如果一开始没有成功,请再试一次!
这来自经验,是的,信息是神秘的 :)
确保您是否在公司代理后面也为 https 设置它,例如export https_proxy=<your proxy>
epel-repo RPM 应该有 ca-certificates 有依赖关系!!【参考方案2】:
我解决了这个问题,编辑/etc/yum.repos.d/epel.repo
和/etc/yum.repos.d/epel-testing.repo
文件,注释所有以mirrorlist=...
开头的条目并取消注释所有以baseurl=...
开头的条目。
【讨论】:
在我的例子中,这个修复允许 yum 成功下载 epel repo 的元数据,但是尝试安装包然后失败[Errno 14] Peer cert cannot be verified or peer cert invalid
。正确的解决方法是更新 ca-certificates,如下面的答案所示。
注释所有以 metalink=... 开头的条目并取消注释所有以 baseurl=... 开头的条目在 RHEL7.1 上为我工作
尝试了你的方法,然后yum clean all && yum update
起作用了。但不完全是,它说epel-release-7-11.noarch: [Errno 256] No more mirrors to try
等等。所以我按照sbetharia 的建议尝试了yum update curl --disablerepo=epel
,又尝试了yum clean all && yum update
,它现在终于奏效了。
为我工作。非常感谢。
我没有mirrorlist=
行,但我有metalink=
行,需要评论。【参考方案3】:
使用这个命令:
sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo
或者使用命令
vi /etc/yum.repos.d/epel.repo
转到第 4 行并更改网址
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
到
mirrorlist=http://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
【讨论】:
谢谢;在尝试了许多其他记录在案的解决方案之后,这对我有用(我的错误是,Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
)。我的问题是,为什么会这样?这是由于存储库站点的配置问题吗?
可能不是 HTTPS 服务器,但系统上的 HTTPS 客户端支持可能会过时,因为根证书颁发机构未更新,或者 SSL 库不支持新密码。跨度>
经过多次尝试,用你的 sed 命令解决了。只需复制+粘贴,这就是我所需要的,因为通常我不负责这类事情,只是安装一台测试计算机,仅供我用于测试一些数据库更新。
在 Cent OS 7.6 中,这是sudo sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo
【参考方案4】:
我想这应该可行。我用这个解决了我的问题。
$ sudo yum clean all
$ sudo yum --disablerepo="epel" 更新 nss
【讨论】:
这适用于 Centos 6.8。谢谢 这也解决了我的问题,我很好奇为什么update nss
有助于解决这个问题?!
更新 nss 对我不起作用,但在此之后更新 curl
这也适用于 Centos 6.5。谢谢【参考方案5】:
对于我的情况,注释掉 mirrorlist
并用 baseurl
取消注释条目不起作用。我注意到问题出在.repo
fedora 文件中的https
。我通过进入/etc/yum.repository.d
并在不同的.repo 文件中用http
替换所有https
来解决它。成功了!!
【讨论】:
这可能与 /etc/yum.conf(公司代理)中设置的代理有关?【参考方案6】:更新 curl 对我们有用。 yum 不知何故使用 curl 进行交易。
yum update curl --disablerepo=epel
【讨论】:
你的答案比接受的答案更好,不需要更改 epel.repo 或 epel-testing.repo。 在阅读此答案或其他一些答案之前,我对其进行了跟踪并更新了 curl。我看到更新 curl 也更新了 nss ......所以我想知道这是否是问题所在。在我的例子中,我卷曲了 metalink URL,发现它失败了,并且看到它可以与 --tlsv1 (bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1170339) 一起使用。假设 curl 已过时并对其进行了更新。所以现在我想知道 NSS 是否可以在不更新 curl 的情况下更新,它是否会起作用。【参考方案7】:检查您是否通过代理访问互联网,然后将互联网代理地址添加到yum
配置。
添加
proxy=http://ip:port
致/etc/yum.conf
【讨论】:
确保还指定了 https 代理。 这对我有用,但只有以下参数:proxy_username=your_user proxy_password=your_passwd
这在公司网络或 *** 中有效。谢谢拉沙德!【参考方案8】:
演练步骤
运行以下命令将更新 repo 以使用 HTTP 而不是 HTTPS:
sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo
然后您应该可以使用以下命令进行更新:
yum -y update
【讨论】:
唯一适合我的解决方案!所有其他人都没有改变任何东西(我需要 epel 包)。 在 Cent OS 7.6 中,这是sudo sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo
【参考方案9】:
安装 epel-release 后,您可能会遇到此消息/错误。快速解决方法是更新您的 SSL 证书:
yum -y upgrade ca-certificates
证书更新时也可能出现上述错误,如果是这样,只需禁用epel
repo,即使用以下命令:
yum -y upgrade ca-certificates --disablerepo=epel
一旦证书被更新,你就可以正常使用 yum,即使是 epel repo 也能正常工作。如果您在不同的 repo 中遇到同样的错误,只需将它的名称放在 --disablerepo=<repo-name>
标志上。
注意:如果您不是root
用户,请使用sudo
。
【讨论】:
这对我来说是最好的答案:)【参考方案10】:我通过这个解决方案解决了这个问题。
你只需在这个文件中更改 /etc/yum.repos.d/epel.repo
mirrorlist= 将此网址 https 更改为 http
baseurl= 把这个网址 https 改成 http
【讨论】:
【参考方案11】:以上所有方法对我都不起作用,但是使用以下命令重建 rpm 数据库可以:
sudo rpm --rebuilddb
感谢大家的帮助。
【讨论】:
在执行此操作之前必须使用 baseurl 而不是 mirrorlist(已接受的答案)【参考方案12】:对于无法访问互联网的盒子,您可以删除 epel
存储库:
yum remove epel-release --disablerepo=epel
这发生在我身上,因为我不小心在产品盒上使用 rpm
安装了 epel-release
。
【讨论】:
【参考方案13】:即使 ca-certificates 软件包是最新的,我也遇到了同样的问题。镜像https://mirrors.fedoraproject.org/目前由DigiCert High Assurance EV Root CA
签名,包含在我的ca-bundle
中
$ grep -A 3 "DigiCert High" /etc/ssl/certs/ca-bundle.crt
# DigiCert High Assurance EV Root CA
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
在我的情况下,https 连接失败的原因是系统日期设置为 2002 年,其中DigiCert High Assurance EV Root CA
(尚未)有效。
$ date
Di 1. Jan 11:10:35 CET 2002
更改系统时间解决了这个问题。
【讨论】:
非常感谢您的回答。你先生是个传奇【参考方案14】:我通过进入 /etc/yum.repository.d/ 解决了这个问题。对于我的情况,我用 baseurl 注释掉镜像列表和取消注释条目。以及添加 sslverify=false。
https://serverfault.com/questions/637549/epel-repo-for-centos-6-causing-error
【讨论】:
不仅如此,还将 URL 更改为 archives.fedoraproject.org/pub/archive/fedora/linux/releases/…(对于 fedora.repo 和 fedora-updates.repo)。注意前面的“archives”和路径中的“pub/archive”) yum install -y yum-utils --disablerepo=epel && yum-config-manager --save --setopt=epel.sslverify=false【参考方案15】:我已通过将 epel.repo 文件中的 https 条目更改为 http 来解决此问题。
【讨论】:
【参考方案16】:我尝试了大多数这些解决方案,但没有一个对我有用。
唯一对我有用的是禁用并删除有问题的 repo。
sudo yum --disablerepo=epel\* remove epel-release.noarch
【讨论】:
【参考方案17】:在我的情况下,当我注释掉 mirrorlist 时,错误消失了,但 repo 也没有工作,所以我手动在/etc/yum.repos.d/epel.repo
中指向正确的 baseurl,如下所示
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://iad.mirror.rackspace.com/epel/7Server/x86_64/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://iad.mirror.rackspace.com/epel/7Server/x86_64/debug/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://iad.mirror.rackspace.com/epel/7Server/SRPMS/
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch&infra=$infra&content=$contentdir
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
【讨论】:
【参考方案18】:将镜像列表 URL 从 https 更改为 http 解决了我的问题。
【讨论】:
【参考方案19】:这样修复我的:
yum install elfutils-default-yama-scope-0.168-8.el7.noarch --disablerepo=epel
yum install nss-pem -disablerepo=epel
yum reinstall ca-certificates --disablerepo=epel
yum clean all
rm -rf /var/cache/yum
yum update`
【讨论】:
【参考方案20】:这些都不适合我(我什至没有尝试像手动编辑 repo 文件这样的技巧)。
但是在简单的yum update -y
之后它就起作用了
【讨论】:
【参考方案21】:另一个可能的原因是您的架构不受支持。我遇到了这个问题,因为我得到了一个 CentOS 虚拟机,想要安装 EPEL,但我终生无法完成。
原来虚拟机是 CentOS 7 i386,这是一种显然不再受 EPEL 支持的架构。我想在这种情况下唯一的补救办法是重新安装。
【讨论】:
【参考方案22】:试试
yum clean all --enablerepo=*
然后
yum update --disablerepo=epel
【讨论】:
【参考方案23】:对于过时的 CentOS 6,我在 /etc/yum.repos.d/epel.repo 中使用了它
baseurl=https://d2lzkl7pfhq30w.cloudfront.net/pub/archive/epel/6/$basearch
【讨论】:
【参考方案24】:我在 Windows 10 上运行 Centos 7 virtualbox 虚拟机时遇到此错误。经过一番折腾后,我发现错误来自 yum 尝试使用 IPV6,因此我必须编辑 /etc/yum.conf 并添加:
ip_resolve = 4
我希望这可以帮助其他人在这个错误上花费的时间比我少!
【讨论】:
【参考方案25】:首先,检查 /etc/yum.conf 中的“yum”配置 然后尝试上述提示:-)
【讨论】:
这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review【参考方案26】:我通过取消注释baseurl
并在/etc/yum.repos.d/epel.repo
中注释metalink
行解决了我的问题。
【讨论】:
以上是关于yum 错误“无法检索存储库的金属链接:epel。请验证其路径并重试”更新 ContextBroker的主要内容,如果未能解决你的问题,请参考以下文章
yum install错误 系统环境:Oracle Linux5.4 在通过yum安装软件时出现以下错误: