zl程序教程

您现在的位置是:首页 >  后端

当前栏目

CentOS8 解决 yum元数据下载失败的方法

方法下载数据 解决 失败 yum CentOS8
2023-09-27 14:24:14 时间

背景

  • 最近同事反馈CentOS的机器无法再现安装 rpm包了. 提示信息主要是下载源数据失败.
  • 今天上午抽时间进行了一下简单验证, 晚上进行一下总结. 避免遗忘.
  • 认为与Redhat被IBM收购之后, 收紧大家白嫖的资源有关系, 红帽进行了有意的修改,但是没有考虑太多兼容性

问题现象

  • CentOS8 这边的机器存在问题
机器版本信息
CentOS Linux release 8.0.1905 (Core)
报错信息为:
[root@CentOS8 yum.repos.d]# yum makecache
CentOS-8 - Base
为 repo 'BaseOS' 下载元数据失败
错误:为 repo 'BaseOS' 下载元数据失败
  • 网上很多解决方法让进行替换yum源, 但是这边发现替换了也是不起效果.

问题解决

  • 自己进行了一下简单的分析, 发现默认的仓库信息其实是不正确的
CentOS8之后仓库已经不是这样的url了:
https://mirrors4.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
版本号基于stream进行了修改
https://mirrors4.tuna.tsinghua.edu.cn/centos/8-stream/BaseOS/x86_64/os/
# 注意变成了 8-stream 而不是 8 
  • 知道这个地方之后, 解决方法就比较简单了, 将url改对进行下载
find /etc/yum.repos.d/ -name "*.repo" | xargs  sed -i 's/$releasever/8-stream/g'
find /etc/yum.repos.d -name "*.repo" | xargs  sed -i 's/$basearch/x86_64/g'
  • 注意进行了这样修改 需要先进行备份.
  • 理论上就可以进行元数据的建立了.

其他问题

  • 今天进行部署时还发现一个这样的问题:
模块依赖问题

 问题 1: conflicting requests
  - nothing provides module(perl:5.26) needed by module perl-DBD-MySQL:4.046:8010020191114030811:073fa5fe-0.x86_64
 问题 2: conflicting requests
  - nothing provides module(perl:5.26) needed by module perl-DBD-SQLite:1.58:8010020191114033549:073fa5fe-0.x86_64
 问题 3: conflicting requests
  - nothing provides module(perl:5.26) needed by module perl-DBI:1.641:8010020191113222731:16b3ab4d-0.x86_64
元数据缓存已建立。
  • 网上的解决方案说是可以用如下命令来解决:
    yum module enable perl:5.26
  • 但是我发现还是无效
  • 改用官方源 修改 releaserver 就可以了.

方法二

  • 根据此博客https://www.cnblogs.com/reachos/p/11089013.html
  • 应该还可以不修改 baseurl 的方式进行处理, 可以修改yum 默认的参数变量 进行正确的url指向
cat > /etc/yum/vars/basearch <<EOF
x86_64
EOF

cat > /etc/yum/vars/releasever <<EOF
8-stream
EOF
  • 注意如果是银河麒麟或者是其他操作系统需要根据 仓库的url进行修改.