【Linux】关于CentOS中的CentOS-Base.repo文件

[复制链接]
发表于 2026-10-4 19:22:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

CentOS 的软件安装靠 yum 走仓库,仓库地址就写在 repo 文件里。CentOS-Base.repo 是其中最核心的一个,里面的 baseurl 和 mirrorlist 两个选项控制着“去哪儿下载包”,但两者行为差别不小,很多人换源失败其实是因为没搞清谁生效。本文把这两个选项拆开讲,并给出一套可执行的换源步骤。

一、repo 文件在哪里

CentOS 7 上主仓库文件是 /etc/yum.repos.d/CentOS-Base.repo,其余还有 CentOS-Update.repo、CentOS-Extras.repo 等。查看当前生效的仓库列表:

yum repolist all

改之前先把原文件留一份:

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak

二、baseurl:直接指向某一个仓库地址

baseurl 指定一个或多个具体的 URL,指向仓库的实际位置。设了它,yum 会直接从这个(或这些)地址拉包。

  • 举例:baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/,装软件时就去这个地址找。
  • 优点:地址明确、可控,指定一个快而稳的镜像站点后速度就稳定了;排查问题时也容易定位。
  • 缺点:镜像慢或挂了就直接影响下载;选择权在你手上,需要自己判断哪个站快。

三、mirrorlist:先拿列表再挑最快的一个

mirrorlist 指向的是一个能返回多个镜像地址的列表地址,yum 先去问它拿到一堆 URL,再从中挑一个。

  • 举例:mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=vagrant,yum 从这个地址取回镜像列表后自己选。
  • 优点:能自动挑相对近的镜像,理论上速度更好,也天然有冗余。
  • 缺点:一旦 mirrorlist 服务器不可用、或者列表里的站点都连不上,安装会直接失败;多一次请求也多一处故障点。

四、两者同时写会怎样

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
mirrorlist=http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=vagrant

同一段里两个都写时,baseurl 通常覆盖 mirrorlist,也就是说以 baseurl 为准。想让 mirrorlist 生效,往往要把它注释掉,或者反过来只保留一个。

五、换源实操:以阿里云镜像为例

  1. 备份原有 repo 文件(上面那条 cp 已做)。
  2. 清空 /etc/yum.repos.d/ 里不再需要的 repo,避免多个源互相抢。
  3. 写入新的 CentOS-Base.repo:
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

写的时候注意几点:

  • $releasever 会被替换成系统版本号,但有些镜像站路径不含这一层,CentOS 7 直接写 7 更稳。
  • 云厂商的 ECS 上,很多时候镜像源已经做了内网适配(比如 mirrors.cloud.aliyun.com 的内网域名),优先用内网地址能省下大量公网带宽。
  • EOL 之后的 CentOS 7 / 8,官方源可能已经下线,需要改用 vault 归档源,换源时留意 404。

六、改完必须重建缓存

sudo yum clean all
sudo yum makecache fast

这一步不能省。yum 会缓存仓库元数据的索引,换了地址不清缓存, yum 还在拿旧地址去请求,表现就是“换了源却没变快”或者报一堆 404。

七、怎么判断换源成功了

 sudo yum repolist all
sudo yum --showduplicates list list

如果看到的仓库地址已经是新镜像,说明生效;如果不确定,用 yum -v install 某个包 看它实际去哪里下载。

八、常见坑

  • 注释掉 mirrorlist 但没留空行:TOML/INI 格式对空行不敏感,但每行末尾多余的空格和中文全角冒号会导致解析失败,报错通常是 “Cannot find a valid baseurl”。
  • gpgcheck=1 但 gpgkey 路径不对:密钥文件不在 /etc/pki/rpm-gpg/ 下就会校验失败,换源时一并处理密钥,或临时改成 gpgcheck=0 但需要知晓风险。
  • 同时留着多个第三方源:EPEL、Remi、Docker 源一起指向同一个旧镜像,元数据的 basearch 路径不一致就会冲突。
  • CentOS 8 流(Stream)路径不同:Stream 的仓库结构跟点版本不一样,直接用 7 的 URL 会 404,需要单独查对应镜像站的目录。

九、总结

baseurl 和 mirrorlist 的选择其实很简单:追求可控、确定就去用某个镜像站,写 baseurl;希望自动挑最近的就去用 mirrorlist。两者同时出现时以 baseurl 为准。换源之后 yum clean all 加 makecache 是必经步骤,跳过它等于没改。真正花时间的是排查 404 和密钥校验,记住“看 repolist 输出的实际地址”这一步,绝大部分问题都能当场确认方向对不对。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表