刚装好的Linux服务器,yum默认指向的是国外官方源。国内直连延迟高、下载慢,装一个常用工具可能要等好几分钟,中途还常因超时报错。把yum源切到国内镜像,通常是最省事的提速办法。

阿里云开源镜像站(mirrors.aliyun.com)同步了CentOS、EPEL、Anolis OS等主流发行版的软件仓库,更新比较及时。在阿里云ECS上使用时,流量走的是阿里云内网或国内骨干网,速度差别最明显。对个人开发者和中小团队来说,改一下配置就能见效,成本很低。
换源前的准备
动手前先看一眼系统版本。执行cat /etc/redhat-release,确认是CentOS 7、CentOS 8、Anolis OS还是其他版本。不同版本对应的仓库文件不一样,拿错文件会直接报错。
网络那边也要看一下。服务器至少要能解析mirrors.aliyun.com,可以用ping -c 3 mirrors.aliyun.com测试。如果域名都解析不了,问题出在DNS,换源本身解决不了。
最后做好备份。改错了能快速回退,这一步很简单,但很多人会跳过:
sudo cp -r /etc/yum.repos.d/ /etc/yum.repos.d.bak
新源一旦出问题,有备份几秒钟就能恢复原状。
案例一:CentOS 7 切换阿里云yum源
以一台部署在阿里云华东地区的CentOS 7 ECS实例为例。这台机器原本执行yum install时,下载速度只有几十KB每秒,装一个nginx要近十分钟。切换分为三步。
第一步,下载阿里云提供的基础仓库文件,替换系统默认配置:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
第二步,安装EPEL扩展源。htop、ncdu、certbot这些常用软件都依赖EPEL,不加这一步,很多包会找不到:
sudo curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
第三步,清掉旧缓存,重建元数据:
sudo yum clean all
sudo yum makecache
可以用yum repolist看一下启用的仓库,确认base和epel都在列表里。之后再装一次nginx,下载速度提到约20MB每秒,整个过程不到一分钟。这个案例里,提速主要来自元数据刷新和包下载两个环节,而这两处正是国内直连最容易卡住的地方。
案例二:CentOS 8 及停服版本的处理
CentOS 8已于2021年底停止维护,官方源大部分已经下线。直接沿用旧配置,会看到“Cannot find a valid baseurl”之类的报错。这时可以把仓库地址改为阿里云镜像站的centos-vault归档路径,并确认对应的版本目录确实存在。具体路径以镜像站的实际目录为准。
归档仓库只能解决依赖安装的问题,不能解决安全问题。停服系统不再有安全更新,如果业务还跑在CentOS 8上,长期看应该规划迁移到Anolis OS、Rocky Linux或AlmaLinux这类仍在维护的发行版。这些系统同样可以从阿里云镜像站获取软件源。
常见问题排查
换源后如果仍然报错,可以按下面几项逐个检查:
- DNS解析失败:检查/etc/resolv.conf,用nslookup mirrors.aliyun.com确认能否解析。解析不了时,可以改用阿里云内网DNS再试。
- GPG校验失败:多半是仓库公钥没有导入。打开repo文件,核对gpgkey地址是否与镜像站一致,不一致时以镜像站提供的地址为准。
- 元数据过期:执行yum clean all后重新yum makecache,大部分由旧缓存引起的异常都能清掉。
- 仓库冲突:同时存在多个指向不同镜像的repo文件时,包版本容易混乱。只保留需要的文件,其余移到备份目录,不要直接删除。
使用建议
- 定期关注镜像站公告。阿里云会调整仓库路径或下线旧版本,写死在脚本里的URL隔一段时间要检查一次能否访问。
- 生产环境先在测试机上验证。换源会改变依赖的来源,直接在线上改,已经稳定运行的服务可能出现意外。
- 服务器不在阿里云上也能使用同样的镜像地址,但速度取决于你的网络出口。想知道实际效果,用time yum install装一个小包测一下,比参考别人的数字更可靠。
阿里云yum源的配置流程其实就三步:备份、替换仓库文件、刷新缓存。如果经常新开服务器,把这套步骤写成初始化脚本,每次执行一次,能省下不少重复等待。