安装epel源产生的报错:Cannot retrieve metalink for repository: epel. Please verify its path and try again解决方法与产生原因
直接上图,如图修改,注释mirrorlist使用baseurl的。
原理如下:
找到yum.repo.d文件夹下的文件,随便打开一个,找到mirrorlist的url,比如:
https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
可以在/etc/yum.conf文件中看到如下url:
cachedir=/var/cache/yum/$basearch/$releasever
找到该文件夹下,发现 $basearch 其实就是 x86_64
这类yum变量也可以在5.3.3. Using YumVariables这里查看:
$releasever
您可以使用此变量引用Red Hat Enterprise Linux的发行版本。yumob从/etc/yum.conf配置文件中的distrovepkg=value行获得$releasever的值。如果/etc/yum.conf中没有这样的行,那么通过从redhat发布包中派生版本号,yum可以推断出正确的值。
$basearch
您可以使用$basearch来引用系统的基本架构。例如,i686和i586机器的基本架构都是i386,而AMD64和Intel64机器的基本架构是x86_64。
这里有一个$releaserver的骚操作,具体如下:
然后打开https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=x86_64连接
发现就是一堆容器url,所以mirrorlist指向的就是一堆baseurl(Specifies a URL to a file containing a list of baseurls. )
而baseUrl必须指向 yum服务器上的repository的repodata文件夹,因为这个文件夹上保存着rpm文件安装时需要的依赖信息(Must be a URL to the directory where the yum repository’s ‘repodata’ directory lives.)
我们在日常使用中,配置的阿里yum源其实就是centos对应的原厂的软件更新服务,所以我们一般在baseurl里面进行配置,如:
http://mirrors.aliyun.com/centos/6/os/x86_64
该url指向一个repodata目录的容器地址
这个容器里面是由原厂替我们维护的一系列软件,我们可以高效的安装、卸载、更新软件
但是如果我们需要的第三方软件原厂的提供的容器没有替我们维护,就需要我们自己找到相应的容器地址了,比如docker-engine的容器地址可以如下:
http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/6
这种就需要我们另外用一个repo文件进行标注,一个单独属于docker-engine的容器。有了容器地址我们又可以使用yum轻松的进行软件的维护