206
云计算
负载均衡
产品简介
产品价格
快速入门
用户指南
实践操作
常见问题
购买指南
云服务器
产品简介
计费规则
购买指导
控制台使用指南
常见问题
云数据库
产品简介
计费规则
购买指导
快速入门
连接实例
控制台使用指南
对象存储
产品简介
控制台使用指南
程序员百科
Python
在Alibaba Cloud Linux 2系统的ECS实例中,使用docker-ce、epel等第三方YUM源安装软件失败怎么办?

产品推荐:

1、安全稳定的云服务器租用,2核/2G/5M仅37元,点击抢购>>>

2、高防物理服务器20核/16G/50M/500G防御仅350元,点击抢购>>>

3、百度智能建站(五合一网站)仅880元/年,点击抢购>>> 模板建站(PC+手机站)仅480元/年,点击抢购>>>

4、阿里云服务器2核2G3M仅99元/年、2核4G5M仅199元/年,新老同享,点击抢购>>> 

5、腾讯云服务器2核2G4M仅99元/年、新老同享,点击抢购>>>   


点击这里点击这里进入阿里云ECS官方页面,立即免费体验云服务器ECS>>>

问题现象

在符合如下条件的Alibaba Cloud Linux 2系统的ECS实例中,使用适配CentOS 7系统中的docker-ce、epel第三方YUM源,执行yum install docker-ce命令安装Docker软件包失败,并提示如下报错。

  • 镜像:Alibaba Cloud Linux 2.1903 LTS 64位。

  • 镜像ID:aliyun_2_1903_x64_20G_alibase_20210325.vhd及之前所有版本。

 
Loaded plugins: fastestmirror, langpacks, update-motdLoading mirror speeds from cached hostfile
  * epel: mirror.sjtu.edu.cn https://mirrors.aliyun.com/docker-ce/linux/centos/2.1903/x86_64/stable/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror.Downloading packages:
docker-ce-20.10.6-3.el7.x86_64 FAILEDhttps://mirrors.aliyun.com/docker-ce/linux/centos/2.1903/x86_64/stable/Packages/docker-ce-20.10.6-3.el7.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found Trying other mirror.
docker-ce-rootless-extras-20.1 FAILEDhttps://mirrors.aliyun.com/docker-ce/linux/centos/2.1903/x86_64/stable/Packages/docker-ce-rootless-extras-20.10.6-3.el7.x86_64.rpm: [Errno 14] HTTPS Error 404 - Not Found
 Trying other mirror. 


Error downloading packages:  3:docker-ce-20.10.6-3.el7.x86_64: [Errno 256] No more mirrors to try.
  docker-ce-rootless-extras-20.10.6-3.el7.x86_64: [Errno 256] No more mirrors to try.

问题原因

第三方YUM源仅适配CentOS 7发行版,Alibaba Cloud Linux 2操作系统与CentOS 7操作系统的$releasever值不同,导致YUM解析后的地址无效,从而下载容器软件包失败。

说明

YUM安装docker-ce软件包时,首先会在系统中获取版本号,即$releasever值,然后替换相应YUM源中baseurl地址对应的$releasever变量,YUM从替换后的baseurl地址中获取相关数据。由于CentOS 7操作系统的$releasever值为7,Alibaba Cloud Linux 2操作系统的$releasever值为2.1903,因此解析后的baseurl地址并非预期地址,YUM便无法从这个错误的地址中获取数据。

解决方案

请根据实际需求情况,选择以下对应方案进行修复。

  • 您可以参考方案一:手动修改步骤,通过手动修改$releasever变量值进行修复。

  • 您可以参考方案二:安装插件修改步骤,通过安装yum-plugin-releasever-adapter插件进行修复。

说明

下列操作以docker-ce源为例进行举例,如果您使用的是其他YUM源,解决方法类似。

方案一:手动修改

  1. 远程登录Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例。

  2. 执行以下命令,编辑/etc/yum.repos.d/docker-ce.repo配置文件。

     
    vim /etc/yum.repos.d/docker-ce.repo
    1. i键切换至编辑模式,找到docker-ce.repo文件中所有enabled=1值的源,将源中baseurl地址的$releasever变量修改为7,修改之后的内容如下所示。Dingtalk_20210610100121.jpg

    2. 修改完成后,按下Esc键后,输入:wq并回车以保存并关闭配置文件,重新安装软件包即可。

方案二:安装插件修改

安装yum-plugin-releasever-adapter插件实现$releasever值的自动转换,即将2.1903转换为7。

  1. 确认实例是否支持使用yum-plugin-releasever-adapter插件。

    yum-plugin-releasever-adapter插件目前的版本及默认支持的第三方repo如下表所示:




    插件版本

    默认支持的第三方repo

    插件的限制

    1.0-1.3

    docker-ce.repo,epel.repo


    您需要满足以下条件,才可以使用该插件:

    • 操作系统需要是Alibaba Cloud Linux 2。

    • 执行以下命令,确认系统中存在plus的repo。

       
      cat /etc/yum.repos.d/AliYun.repo |grep -A3 plus

      系统显示类似如下,说明存在plus的repo。Dingtalk_20210622170320.jpg


  2. 远程登录Linux实例。

    具体操作,请参见通过密码或密钥认证登录Linux实例。

  3. 执行以下命令,安装yum-plugin-releasever-adapter插件,插件默认对docker-ce、epel第三方YUM源中的$releasever值自动进行转换。

     
    yum install yum-plugin-releasever-adapter --disablerepo=* --enablerepo=plus
  4. 若无其他的YUM源需要转换,安装插件后即可直接安装软件;若还有其他的YUM源需要转换,请按照以下方式配置:

    1. 执行以下命令,进入指定目录。

       
      cd /etc/yum/pluginconf.d/
    2. 执行以下命令,编辑releasever-adapter.conf配置文件。如果需要添加其他的YUM源,则需要将YUM源的.repo文件名添加在includes字段后面,并以逗号隔开。

       
      vim releasever-adapter.conf

      系统显示类似如下。

       
      [main]
      
      enabled=1hostfilepath=timedhosts.txt[releasevermapping]
      
      release_dict={'2.1903':'7', '3':'8'}
      
      
      [reposlist]
      
      includes=docker-ce.repo, epel.repo
      说明
      • 文件中参数的具体介绍如下所示:

        • [main]:为插件的主要控制部分,控制插件的启用与否,其中enabled=1表示启用插件,enabled=0表示停用插件。

        • [releasevermapping]:为待处理的$releasever的映射关系,其中2.1903映射为7,3映射为8。

        • [repolist]:为需要修改的源的列表,如果需要添加其他的源,则需要将.repo文件的名字添加在include字段后面,并以逗号隔开。

      • 一个.repo文件中有多个可以使用的源,每个源都有一个独立的名称区分其他的源,同时一个系统中不能出现重复的名称,例如:docker-ce.repo中有[docker-ce-stable][docker-ce-stable-debuginfo]等源。

      • 请务必保证新添加到releasever-adapter.conf配置文件中的源文件名称是源文件内各个源名称的前缀,例如:docker-ce.repo源文件中包含的docker-ce-stabledocker-ce-stable-debuginfo两个源名称,均以docker-ce为前缀。

    3. 保存配置文件,执行以下命令,即可通过docker-ce、epel第三方YUM源安装软件包。

       
      yum install docker-ce


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!