在执行yum命令时出现“无法检索存储库元数据”导致失败(CentOS 6.4)
■病状
在CentOS 6.X系統上,即使沒有對yum相關設定進行修改,在使用yum命令時也會出現以下錯誤。
# yum update
Loaded plugins: fastestmirror, security
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os error was
14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'"
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
#
■ 病患的檢查結果
由于CentOS 6.X系列的yum仓库位置发生变化,让我们进行修改。
这次我们将以下作为更改目标地。
http://vault.centos.org/6.4/
■答复方式
编辑仓库配置文件
位置:/etc/yum.repos.d/CentOS-Base.repo
在这个配置文件中,有很多写着存储库位置的内容。
我们将更改存储库的位置。
→ 方案1:首先备份文件。
→ 方案2:注释掉mirrorlist。
→ 方案3:取消注释basename,将URL进行替换。
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
≪後略≫
・指令
cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
sudo sed -i -e "s|mirror\.centos\.org/centos/\$releasever|vault\.centos\.org/6.4|g" /etc/yum.repos.d/CentOS-Base.repo`
sudo sed -i -e "s|#baseurl=|baseurl=|g" /etc/yum.repos.d/CentOS-Base.repo
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-Base.repo
备忘录:
第一行是文件备份
第二行是URL重写
第三行是取消baseurl的注释外
第四行是取消mirrorlist的注释sed [选项] [文件]
-i:直接编辑文件
-e:添加脚本
s/替换前/替换后/g:将匹配到的替换前的部分替换为替换后,在/g则替换所有匹配到的地方
\. \\$:点和美元符号需要用\进行转义
http://www.atmarkit.co.jp/ait/articles/1610/17/news015.html
https://qiita.com/katsukii/items/1c1550f064b4686c04d4
・编辑成果
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://vault.centos.org/6.4/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
≪後略≫
如果一切顺利,应该能够执行yum命令。
# yum update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
base | 3.7 kB 00:00
base/primary_db 0% [ ] 0.0 B/s | 30 kB --:-- ETA
base/primary_db 1% [ ] 37 kB/s | 59 kB 02:00 ETA
base/primary_db 2% [= ] 48 kB/s | 131 kB 01:31 ETA
≪後略≫
如果上述方法不能解决问题
在我这个情况下,发生了以下错误,结果就是我没有进行DNS配置。
命令:yum升级
# yum update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
http://vault.centos.org/6.4/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'vault.centos.org'"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again
#
确认情况1:通过ping命令连接到Google的IP地址,网络连接正常。
# ping 216.58.197.195
PING 216.58.197.195 (216.58.197.195) 56(84) bytes of data.
64 bytes from 216.58.197.195: icmp_seq=1 ttl=128 time=8.68 ms
64 bytes from 216.58.197.195: icmp_seq=2 ttl=128 time=9.21 ms
^C
--- 216.58.197.195 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1744ms
rtt min/avg/max/mdev = 8.685/8.949/9.214/0.280 ms
・检查情况② 网络连接(使用ping命令检查存储库的IP地址)→正常
# ping 162.251.108.7
PING 162.251.108.7 (162.251.108.7) 56(84) bytes of data.
64 bytes from 162.251.108.7: icmp_seq=1 ttl=128 time=142 ms
64 bytes from 162.251.108.7: icmp_seq=2 ttl=128 time=144 ms
64 bytes from 162.251.108.7: icmp_seq=3 ttl=128 time=146 ms
64 bytes from 162.251.108.7: icmp_seq=4 ttl=128 time=142 ms
64 bytes from 162.251.108.7: icmp_seq=5 ttl=128 time=153 ms
^C
--- 162.251.108.7 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4845ms
rtt min/avg/max/mdev = 142.394/145.783/153.022/3.979 ms
[root@cent64-gn01 ~]#
・第三步,确认情况:网络连接(通过ping确认DNS是否正常)→不正常。
# ping vault.centos.org
ping: unknown host vault.centos.org
在接口设置中添加DNS设置(通过vi直接编辑)
命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
補充说明:本次选择了Google DNS(主DNS为8.8.8.8,备用DNS为8.8.4.4)。
DEVICE=eth0
HWADDR=xx:xx:xx:xx:xx:xx
TYPE=Ethernet
UUID=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=xxx.xxx.xxx.xxx
NETMASK=xxx.xxx.xxx.xxx
GATEWAY=xxx.xxx.xxx.xxx
DNS1=8.8.8.8
DNS2=8.8.4.4
网络设置的重启
命令:/etc/rc.d/init.d/network restart
# /etc/rc.d/init.d/network restart
インターフェース eth0 を終了中: [ OK ]
インターフェース eth1 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]
インターフェース eth0_20181008 を活性化中: RTNETLINK answers: File exists
[ OK ]
インターフェース eth1 を活性化中: [ OK ]
#
・第三步,确认情况:通过ping命令检查与存储库的DNS的网络连接是否正常→ 确认正常
# ping vault.centos.org
PING vault.centos.org (208.100.23.71) 56(84) bytes of data.
64 bytes from ip71.208-100-23.static.steadfastdns.net (208.100.23.71): icmp_seq=1 ttl=128 time=159 ms
64 bytes from ip71.208-100-23.static.steadfastdns.net (208.100.23.71): icmp_seq=2 ttl=128 time=157 ms
^64 bytes from ip71.208-100-23.static.steadfastdns.net (208.100.23.71): icmp_seq=3 ttl=128 time=159 ms
64 bytes from ip71.208-100-23.static.steadfastdns.net (208.100.23.71): icmp_seq=4 ttl=128 time=162 ms
^V64 bytes from ip71.208-100-23.static.steadfastdns.net (208.100.23.71): icmp_seq=5 ttl=128 time=162 ms
^C
--- vault.centos.org ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4907ms
rtt min/avg/max/mdev = 157.744/160.263/162.505/1.812 ms
#
・执行yum官方命令→确认
命令:yum update
# yum update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
base | 3.7 kB 00:00
base/primary_db 0% [ ] 0.0 B/s | 30 kB --:-- ETA
base/primary_db 1% [ ] 37 kB/s | 59 kB 02:00 ETA
base/primary_db 2% [= ] 48 kB/s | 131 kB 01:31 ETA
≪後略≫
■来源/参考
当旧版本的CentOS无法通过yum进行更新时,在中国的Linux博客上(http://luozengbin.github.io/blog/2015-08-29-%5Btips%5D%5Blinux%5D%E6%97%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3centos%E3%81%A7yum%E6%9B%B4%E6%96%B0%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E6%99%82.html),有关于此问题的解决方法。
【CentOS】【Linux】yum命令的错误集与解决方法总结。
安装完CentOS6.6(64位)后,无法成功进行yum更新。
https://teratail.com/questions/31756
请试用一下!以下是四种推荐的免费DNS服务器!
http://suqare.info/archives/239
APNIC和Cloudflare共同免费提供的高速公共DNS服务”1.1.1.1″,不会保存IP地址。
CentOS 配置参考的 DNS 服务器设置
http://ezxnet.com/linux/entry3560/
在CentOS6上的网络设置文件