问题:
在本地的虚拟机使用yum安装软件时,经常出现 centos yum (28, 'Connection time-out') Trying other mirror. 或下面的那样情况imeout on http://mirrors.aliyun.com/centos/6/os/x86_64/repodata/repomd.xml: (28, 'Connection time-out') Trying other mirror.
在centOs上安装软件时。提示超时,或链接不上的信息: http://mirrors.aliyun.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyun.com/centos/6/os/x86_64/repodata/repomd.xml: (28, 'Connection time-out') Trying other mirror. http://mirrors.aliyuncs.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyuncs.com/centos/6/os/x86_64/repodata/repomd.xml: (28, 'Connection time-out') Trying other mirror. http://mirrors.cloud.aliyuncs.com/centos/6/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.cloud.aliyuncs.com'" Trying other mirror. http://mirrors.aliyun.com/epel/6/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http://mirrors.aliyun.com/epel/6/x86_64/repodata/repomd.xml: (28, 'Connection time-out') Trying other mirror.
当你用排查ping 网络时发现又是通的,浏览器访问链接也是通的。这就奇怪了,为什么yum一安装就说超时报错。换了阿里,网易好几个源都是一个问题,注意了,这可能不是repo源的问题,而是你DNS解析设置的问题。
我们知道网卡的DNS设置是首先生效的 /etc/sysconfig/network-scripts/ifcfg-eth0 然后才是全局的DNS配置文件 /etc/resolv.conf
可能你都都习惯这样设置(在网卡上直接配置外网的DNS解析地址),这样设置在你的公网服务器(如VPS,云服务器等环境)是没有问题的,可当在本地环境(如:虚拟机,本地网络)时就会造成了我们yum安装超时报错。
下面的就是常见不靠谱的DNS配置,
当你在你的虚拟机网卡设置成外网的DNS,网络好时没事,一不稳定,虚拟机网关在转发请求时,就容易掉,超时就会导致你安装软件失败。
而本地虚拟机DNS1设置为网关地址,请求通过网关出去会自己找本地的DNS服务器去解析,然后返回给本机。
解决方案:
建议本地虚拟机环境,设置DNS1为网关地址,DNS2 为 223.5.5.5 等其他公网DNS
划线的地址要填你自己虚拟机的网关地址。
虚拟机的网关在网卡信息和相应软件的网络管理中可以找到。
我的本地虚拟机常用的DNS设置,可以参考
[root@web-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE="Ethernet" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" DEVICE="eth0" ONBOOT="yes" IPADDR="10.0.0.6" PREFIX="24" GATEWAY="10.0.0.2" DNS1=10.0.0.2 # DNS1 设置为网关地址 DNS2=223.5.5.5 #DNS2设置为阿里DNS,或其他的如8.8.8.8 这样网卡的DNS设置就双保险了 [root@web-01 ~]# cat /etc/resolv.conf # Generated by NetworkManager nameserver 10.0.0.2 nameserver 8.8.8.8
换源
搞清楚自己的DNS设置后在设置repo源的问题。
注意上面提到的,自己网卡的DNS设置好后!! 然后再换源,不然换完还是超时报错,会很崩溃
这里是CentOS换国内阿里云yum源
1、备份
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo CentOS 6 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo CentOS 7 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、之后运行yum makecache生成缓存