服务器上执行 yum install 时,下载慢、超时或直接报错,多半是默认源在境外,链路一抖就断。把 yum 源改成阿里云镜像站只需要改一个配置文件,通常几分钟就能见效。本文以 CentOS 7 为例,说明阿里云 yum源 的配置方法、验证方式,以及几个容易踩的坑。

哪些机器适合切到阿里云镜像站
mirrors.aliyun.com 收录了 CentOS、Ubuntu、EPEL 等常用发行版的仓库,内容与官方仓库保持同步。ECS 实例访问内网地址时,流量不占公网带宽。其他云厂商或本地机房的服务器可以走公网访问,速度通常也比境外源稳定。如果机器在阿里云以外,速度仍取决于本地出口到阿里云的链路,切换前可以先用 curl 测一下。
动手前先备份
yum 源配置出错后,yum install 和 yum update 都会失败。远程机器上如果连排查工具都装不上,处理起来会很麻烦。改之前先把原配置留一份。
- 确认系统版本:执行 cat /etc/redhat-release,记下版本号。后面下载的源文件要和版本对应。
- 测试镜像站是否可达:执行 curl -I https://mirrors.aliyun.com,能返回 HTTP 状态码说明网络通。超时或连接被拒绝,就先检查 DNS 和出口防火墙。
- 备份原有配置:执行 cp -a /etc/yum.repos.d/ /etc/yum.repos.d.bak/。回滚时把备份内容拷回原目录即可。
CentOS 7 的五步操作
每一步都可以单独验证。哪一步出错,就停在那一步排查,不用整套重来。
- 备份原有源文件。如果上一节已经做过,可以跳过。
- 下载阿里云提供的 CentOS 7 源文件:curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo。这一步会覆盖原来的 CentOS-Base.repo,所以备份必须先做。
- 清理旧缓存:执行 yum clean all。旧缓存里的元数据来自原来的源,不清掉,后面 makecache 可能沿用旧数据。
- 重建元数据缓存:执行 yum makecache。这一步会连接镜像站下载各仓库的索引。如果报 Could not resolve host 或超时,说明网络或 DNS 有问题,先别往下做。
- 验证结果:执行 yum repolist 查看可用仓库,再执行 yum install -y wget 装一个小工具。repolist 里能看到 base、updates、extras,并且安装正常,才算配置完成。
第四步通过时,输出只有各仓库的下载进度,没有 Error 或 timeout 之类的字样。如果 repolist 里缺少 updates,先打开 CentOS-Base.repo 检查 [updates] 段是否完整,文件内容被截断是常见原因。
一个批量部署的例子
某中小型电商团队在阿里云上租用了 30 台 ECS,用来部署 Web 服务和缓存节点。最开始他们用默认源初始化,每台机器执行 yum update 平均要超过 15 分钟,还经常因为超时中断,只能人工重试。
后来运维人员把上面的配置写成 Ansible 角色,统一推送到所有节点,源地址换成阿里云内网镜像。单台机器的系统更新缩短到 2 分钟左右,初始化脚本不再需要人工盯着。对一台机器来说这只是小改动,对几十台机器来说,省下的等待和返工时间很可观。
CentOS 8、CentOS 7 停更后和 EPEL
CentOS 8 已经停止维护,官方源不再更新,也不再有常规安全补丁。如果必须继续使用,可以把 CentOS-Base.repo 里的 baseurl 改为 centos-vault 路径,例如 mirrors.aliyun.com/centos-vault/8.5.2111/,然后执行 yum makecache 验证。长期运行的机器,还是尽量规划升级。
CentOS 7 也已在 2024 年 6 月结束维护。如果 makecache 时某个仓库返回 404,多半是官方路径已经调整。这时可以在镜像站的 centos-vault 目录下找对应版本的路径,再修改 baseurl。
EPEL 扩展包需要单独添加 epel.repo,指向 mirrors.aliyun.com/epel/ 下与系统大版本对应的目录。版本号对不上时,安装会报依赖错误,先核对 $releasever 再排查。
Alibaba Cloud Linux、Rocky Linux 等系统,阿里云镜像站同样提供仓库。具体地址以镜像站首页的帮助文档为准,不要照搬 CentOS 7 的路径。
常见问题怎么查
- 提示 Could not resolve host:先查 DNS。检查 /etc/resolv.conf 里的 nameserver 是否能解析域名。也可以用镜像站的 IP 直接访问,判断问题出在解析还是网络。
- 元数据校验失败,或提示 repomd.xml 相关错误:多半是旧缓存残留。执行 yum clean all 后重新 yum makecache 即可。
- 个别包找不到:第三方源常绑定某个版本。确认仓库地址中的 $releasever 与系统版本一致。如果路径里手动写死了版本号,改成 $releasever 变量更不容易出错。
单台机器手动改,十分钟左右就够了,改完记得保留备份。多台机器建议用配置管理工具统一下发,这样以后更换镜像站,也只需要改一处。