yum错误“无法为存储库检索metalink:epel。请验证其路径,然后重试。”更新ContextBroker


106

我正在尝试使用命令yum install contextBroker更新Orion ContextBroker。不幸的是,我得到以下错误:

加载的插件:最快的镜像,refresh-packagekit,安全性

从缓存的主机文件中镜像速度

错误:无法检索存储库的metalink:epel。请验证其路径,然后重试

可能出什么问题了?


3
建议的故障排除步骤:您的系统可以curl -v https://mirrors.fedoraproject.org吗?
mwfearnley

选择的答案是一种无法解决根本问题的解决方法,实际上,程序包安装可能会继续失败。我建议取消选择最佳答案,然后让票数对大多数人有用的答案进行排序。
保罗

Answers:


125

我解决了同时编辑/etc/yum.repos.d/epel.repo/etc/yum.repos.d/epel-testing.repo文件,注释所有以开头mirrorlist=...的条目和取消注释以开头的所有条目的问题baseurl=...


就我而言,此修复程序允许yum成功下载epel存储库的元数据,但尝试安装软件包后失败[Errno 14] Peer cert cannot be verified or peer cert invalid。正确的解决方法是更新ca证书,如下面的答案所示。
贝恩

3
注释所有以metalink = ...开头的条目,并取消注释所有以baseurl = ...开头的条目。我在RHEL7.1上工作过
Anurag Singh

1
尝试了您的方法,然后yum clean all && yum update工作了。但是还不完全,它说 epel-release-7-11.noarch: [Errno 256] No more mirrors to try等等。于是我yum update curl --disablerepo=epel按照sbetharia的建议尝试了yum clean all && yum update一次,然后再次尝试,现在终于可以了。
霍西·金

为我工作。非常感谢。
tarekahf

3
我没有mirrorlist=台词,但我有metalink=台词,需要评论。
JellicleCat

169

您只需要更新ca-certificates软件包。在此之前,只需禁用所有失败的https仓库。这就是为什么使用注释镜像列表或使用http代替https的解决方案也可以工作的原因。

例如,如果您只需要禁用epel repo:

yum --disablerepo=epel -y update  ca-certificates

这也将有助于wget,curl以及使用SSL证书的其他任何内容。


9
这应该被接受为正确答案,因为它可以诊断问题的真正根源,而不仅仅是提供解决方法。
Horatio Alderaan 2015年

1
我已经在CentOS 6.5 便当盒上对此进行了测试,它在运行时确实使事情变得更加可靠yum clean all && yum makecache。但是,有时仍然会失败。在我的脚本中添加重试使其更加可靠。我怀疑某些镜像不可靠,重试可以使另一个镜像起作用。因此,如果起初没有成功,请重试!
TrinitronX

1
好吧,这来自经验,是的,消息是神秘的:)
XoR 2015年

2
确保您是否在公司代理后面也将其设置为https,例如export https_proxy=<your proxy>
Markus

3
epel-repo RPM应该具有ca证书具有依赖性!
斯特凡(Stéphane)

59

使用此命令:

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)。我的问题是,为什么要这样做? 这是由于存储库站点上的配置问题引起的吗?
CODE-READ

1
可能不是HTTPS服务器,但是系统上的HTTPS客户端支持可能会过时,因为未更新根证书颁发机构,或者SSL库不支持新密码。
mwfearnley

经过多次尝试,用您的sed命令解决了。只需复制+粘贴,这就是我需要的,因为通常我不负责这种事情,只需安装一台测试计算机,该计算机仅由我用来测试某些数据库更新。
EAmez,

1
在Cent OS 7.6中,这是sudo sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo
JamesThomasMoon1979

19

对于我来说,注释掉mirrorlist和不起作用的条目是baseurl行不通的。我注意到问题https出在.repofedora文件的开头。我在去解决它/etc/yum.repository.d,并更换所有httpshttp不同的.repo文件来。可行!!


这可能与/etc/yum.conf中设置的代理(公司代理)有关吗?
ChristofKälin'19

19

我想这应该工作。我用这个解决了我的问题。

$ sudo yum clean all

$ sudo yum --disablerepo =“ epel”更新nss


3
这为Centos 6.8带来了惊喜。谢谢

1
这也解决了我的问题,我很好奇为什么能update nss帮助解决这个问题?
KLajdPaja

12

更新curl对我们有用。yum以某种方式使用curl进行交易。

yum update curl --disablerepo=epel

您的答案比接受的答案要好,不需要更改epel.repo或epel-testing.repo。
霍西·金

在阅读此答案或其他答案之前,我已对此进行了跟踪并更新了卷曲度。我看到更新curl也更新了nss ...,所以我想知道这是否是问题。就我而言,我卷曲了metalink URL,看到它失败了,并看到它与--tlsv1(bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1170339)一起使用。假定curl已过时并进行了更新。因此,现在我想知道是否可以不更新curl而更新NSS,它是否行得通。
保罗

9

检查您是否通过代理访问Internet,然后将Internet代理地址添加到yum配置中。

proxy=http://ip:port

/etc/yum.conf


2
确保还指定了https代理。
马库斯

1
这对我proxy_username=your_user proxy_password=your_passwd
有用

7

演练步骤

运行以下命令将更新存储库以使用HTTP而不是HTTPS:

sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo

然后,您应该可以使用以下命令进行更新:

yum -y update

唯一适合我的解决方案!其他所有东西都没有改变(我需要epel包)。
KuroNeko

在Cent OS 7.6中,这是sudo sed -i "s/metalink=https/metalink=http/" /etc/yum.repos.d/epel.repo
JamesThomasMoon1979

6

安装epel-release后,您可能会遇到此消息/错误。快速解决方案是更新您的SSL证书:

yum -y upgrade ca-certificates

证书更新时也可能发生上述错误,如果这样,请禁用epel回购,即使用以下命令:

yum -y upgrade ca-certificates --disablerepo=epel 

证书更新后,您就可以正常使用yum,即使是epel仓库也可以正常工作。如果您在不同的仓库中遇到相同的错误,只需将其名称放在--disablerepo=<repo-name>标记中即可。


注意sudo如果您不是root用户,使用。


1
这对我来说是最好的答案:)
qingbo

5

我通过此解决方案解决了这个问题。

您只需在此文件/etc/yum.repos.d/epel.repo中进行更改

mirrorlist =将此URL https更改为http

baseurl =将此URL https更改为http


4

以上所有内容都不适合我,但是使用以下命令重建rpm数据库可以:

sudo rpm --rebuilddb

谢谢大家的帮助。


1
在执行此操作之前必须使用baseurl而不是mirrorlist(可接受的答案)
Telmo Pimentel Mota

3

对于无法访问互联网的盒子,您可以删除epel存储库:

yum remove epel-release --disablerepo=epel

这发生在我身上,因为我不小心安装epel-release使用rpm上的督促框。


3

即使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

更改系统时间可解决此问题。


非常感谢您的回答。您的先生是个传奇人物
托尼·塞皮亚

2

我通过进入/etc/yum.repository.d/解决了这个问题。对于我来说,我用baseurl注释掉了mirrorlist和不可输入的条目。以及添加的sslverify = false。

/server/637549/epel-repo-for-centos-6-causing-error


不仅如此,还将URL更改为archives.fedoraproject.org/pub/archive/fedora/linux/releases/…(对于fedora.repo和fedora-updates.repo)。请注意前面的“存档”和路径中的“ pub / archive”)
dagelf

yum install -y yum-utils --disablerepo = epel && yum-config-manager --save --setopt = epel.sslverify = false
Andrei

2

我已通过将epel.repo文件中的https条目更改为http来解决此问题。


1

在我的情况下,当我注释掉mirrorlist时,错误消失了,但是存储库也无法正常工作,因此我手动将正确的baseurl指向 /etc/yum.repos.d/epel.repo如下

[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



0

固定我的是这样的:

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`

0

这些都不对我有用(我什至没有尝试过像手动编辑repo文件那样的hacks)。

然而,经过简单的工作 yum update -y


0

另一个可能的原因是不支持您的体系结构。我之所以遇到这个问题,是因为我已经获得了CentOS VM,想要安装EPEL,并且终生无法完成它。

事实证明,VM是CentOS 7 i386,它显然是EPEL不再支持的体系结构。我想在这种情况下,唯一的补救方法是重新安装。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.