• 安装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的骚操作,具体如下:

     在 /etc/yum.repos.d/ 目录下的软件库定义文件中,常常会在 baseurl 的路径中提到$releasever 这个变量,表示当前发行版的大版本号,但大家知道这个变量是在哪设置的吗?我 grep 了整个 etc目录都没找到,还是看了 yum.conf 才知道的,是在 yum.conf 文件里 distroverpkg选项定义的。但这个选项就很有问题:
     distroverpkg 和 releasever 名字不同,且看不出什么联系
    distroverpkg的值,并不是明文,而是“redhat-release”。不知道大家看到这个会有什么想法,反正我是首先想到了/etc/redhat-release 文件,但我错了。实际上指的是 redhat-release这个RPM包。所谓“distroverpkg=redhat-release”的意思,其实是将 $releasever 设置为redhat-release 这个RPM包的版本号

    然后打开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轻松的进行软件的维护

  • 相关阅读:
    JDK1.8十个新特性
    问题:No more handles [Could not detect registered XULRunner to use]
    在未标记为正在运行时,调用了RunScript
    问题: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
    常用数据库的JDBC 的URL形式
    Myeclipse插件的三种安装方式
    mysqlError: Illegal connection port value '3306>]'
    异常:Bad version number in .class file
    安装msi文件遇到错误code=2502 or 2503 win8
    spring使用RedisTemplate的坑Could not get a resource from the pool
  • 原文地址:https://www.cnblogs.com/abels0025/p/12504686.html
Copyright © 2020-2023  润新知