ECS上第一次跑yum install,常见情况是下载慢得像在等,或者冒出一串Could not resolve host。这类问题多数不出在软件包本身,而是yum源没配对。下面按顺序说清楚怎么换成阿里云的源,以及换完之后报错怎么查。

为什么要换成阿里云的源
CentOS、Rocky Linux、AlmaLinux 默认指向的是境外镜像站。国内服务器直连,慢是常态,偶尔还会超时。阿里云在多个地域都有镜像节点,同地域的ECS访问它,速度和稳定性都好很多,而且不占公网带宽。
有个朋友做电商后台,新买的ECS放在杭州,装完系统跑一次yum update,下载速度只有几十KB每秒,整个更新耗了四十多分钟。把源切到阿里云的内网镜像后,同样的更新不到两分钟就完成了。差距主要来自网络路径,跟机器配置关系不大。
第一步:确认系统版本
换源前先看清楚系统版本。不同版本的repo文件名和仓库路径不一样,套错了会直接报错。
执行 cat /etc/os-release,重点看ID和VERSION_ID两项。比如ID=”centos”、VERSION_ID=”7″,就是CentOS 7。
CentOS 7 已于2024年6月结束官方维护。如果还在用它,尽早规划迁移到Alibaba Cloud Linux或Rocky Linux,比在旧系统上反复修源要省心。
第二步:备份并替换yum源
改系统文件前先备份,回滚时把备份改回去就行。
以CentOS 7为例:
- 备份原有repo:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
- 下载阿里云对应的repo:curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
- 清理并重建缓存:yum clean all && yum makecache
Alibaba Cloud Linux 2 或 3 的系统自带源已经指向内网镜像,一般不用手动替换。直接执行yum makecache看一下是否正常就够了。
CentOS 8,或者Rocky、AlmaLinux 8/9,把链接里的Centos-7.repo换成对应版本的文件名。阿里云镜像站的repo目录里都列得出来,照着找就行。
第三步:同地域走内网
这一步容易被忽略。阿里云镜像站对ECS内网做了优化,同地域的ECS访问mirrors.cloud.aliyuncs.com这类内网域名时,流量不走公网,也不计费。服务器在同一地域的话,建议把repo里的域名换成内网地址。
可以用sed批量替换,但执行前一定先确认目标域名,免得误伤其他内容。替换完用curl测一下连通性,返回200再继续。
第四步:添加EPEL
nginx、htop、redis的某些版本不在系统默认源里,需要额外装EPEL:
yum install -y epel-release
装完后EPEL的repo默认指向官方地址。如果速度不理想,把baseurl改成阿里云的镜像路径,镜像站的epel目录下有对应说明。
第三方源的软件版本和依赖关系不一定和系统完全匹配。添加之后,最好先在测试机上跑一遍,确认没有依赖冲突,再动生产环境。
报错怎么查
换完源最常见的报错大致有三类:
- Could not resolve host:多半是DNS解析失败。检查/etc/resolv.conf,阿里云内网DNS地址是100.100.2.136和100.100.2.138,缺了或写错都会这样报。
- Cannot find a valid baseurl:repo文件里的版本号或路径写错了。拿repo里的地址去镜像站目录核对一下结构,通常一眼能看出差在哪。
- GPG检验失败:多见于手动拷过来的repo文件。可以临时把gpgcheck=0加上应急,但更稳妥的做法是导入对应系统的GPG公钥,别长期关着校验。
遇到问题先看yum报错原文,它一般会直接指出是哪个源、哪一步出的错。大多数情况改一行配置就能解决,不必急着重装系统。
小结
阿里云yum源的主要好处是下载快,同地域内网还省公网流量。配置本身不复杂,关键是先确认系统版本,备份原文件,再按步骤替换。日常维护时定期跑一次yum clean all和yum makecache,能少踩很多莫名其妙的缓存问题。