新装的服务器执行 yum install 时,常卡在下载慢、超时,或者提示元数据加载失败。多数情况下,问题出在默认的官方源。官方源位于境外,链路长,中途丢包和限速都很常见。把 yum 源切换到阿里云镜像站,改动很小,通常马上就能看到效果。下面以 CentOS 7 和 CentOS 8 为例,说明配置步骤、内网加速方法,以及换源后常见报错的处理思路。

一个常见的场景
假设一台位于华东地区的云服务器要部署 Nginx 和 Redis。执行 yum install nginx 时,终端停在 Loading mirror speeds from cached hostfile 这一行,要等好几分钟才报错。很多人第一反应是查安全组或 DNS,排查一圈后才发现是默认仓库地址的问题。替换成阿里云镜像后,安装明显变快。如果要批量初始化多台机器,这一步最好在初始化阶段统一处理,不要等每台机器各自出问题。
第一步:备份原有配置
改仓库文件前先做备份。CentOS 的默认仓库配置放在 /etc/yum.repos.d/ 目录下,主文件通常叫 CentOS-Base.repo。备份之后,改错了可以直接还原,不用重装系统。命令如下:
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
第二步:下载阿里云镜像配置
阿里云镜像站按系统版本提供了现成的 repo 文件。CentOS 7 执行下面这条命令:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
CentOS 8 换成对应版本的文件:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
CentOS 8 已经停止维护,官方仓库中的部分包已迁移到 vault 归档库。装包时如果提示找不到软件包,可以改用阿里云提供的 vault 版本仓库文件。如果业务允许,也可以考虑迁移到 Rocky Linux 或 AlmaLinux 这类兼容发行版。
下载失败时,先确认服务器能访问镜像站,例如执行 curl -I https://mirrors.aliyun.com/ 看是否返回正常响应。ping 通了不代表 HTTPS 访问也通,用 curl 检查更直接。
第三步:清理缓存并重建
替换 repo 文件后,旧缓存还在,yum 可能继续读取原来源的信息。先清缓存,再重新生成元数据:
yum clean all
yum makecache
接着执行 yum repolist,正常情况下会列出已启用的仓库,以及每个仓库的包数量。如果输出为空或直接报错,多半是 repo 文件格式写错了,或者 baseurl 指向的地址访问不了。逐个检查各段(如 [base]、[updates])的 baseurl 和 enabled 项,就能定位问题。
第四步:配置 EPEL 源
htop、ncdu、certbot 等常用工具不在 CentOS 官方仓库里,而是放在 EPEL 扩展源中。阿里云同样提供了 EPEL 镜像。CentOS 7 的配置命令如下:
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
配置完成后执行 yum clean all 和 yum makecache,EPEL 中的软件就能正常安装了。
内网地址:同地域 ECS 的加速方法
如果服务器位于阿里云 ECS 上,并且与镜像站处于同一地域,可以把域名换成内网地址。内网访问不占用公网带宽,速度更稳定,也不会产生公网流量费用。命令如下:
sed -i ‘s/mirrors.aliyun.com/mirrors.cloud.aliyuncs.com/g’ /etc/yum.repos.d/*.repo
这条命令会批量改写目录下的所有 repo 文件,执行前先确认备份已经完成。另外要确认服务器确实处于阿里云内网。本地机房或其他云厂商的主机仍应使用公网地址,否则会连不上。
常见报错怎么处理
- Could not resolve host:域名解析失败,多数是 DNS 配置有问题。检查 /etc/resolv.conf 中的 nameserver 是否可用,修正后重试。
- GPG 密钥校验失败:repo 文件中的 gpgkey 地址可能与镜像版本不匹配。重新下载对应版本的 repo 文件,比手动改密钥地址更稳妥。
- Another app is currently holding the yum lock:有其他 yum 或 dnf 进程在运行。用 ps aux | grep -E “yum|dnf” 查看进程,等它结束,或确认无用后再结束它。不要直接删除锁文件,否则可能让两个进程同时操作 RPM 数据库。
- 包版本与官方源不一致:镜像站和官方源同步存在延迟,个别包的版本会略旧或略新。用 yum info 包名 查看当前可用版本。业务对版本敏感时,先在测试机上验证。
出问题时怎么回退
如果换源后装包一直失败,或者某个仓库拖慢了整个流程,可以把新 repo 文件改名保留,再把备份恢复原名:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.aliyun
mv /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo
回退后同样执行 yum clean all 清理缓存。
批量初始化的建议
多台服务器时,把备份、替换 repo、清缓存、重建缓存这几步写进初始化脚本。每一步之后检查返回码,失败就停止,并把错误写入日志。这样某台机器的网络问题不会拖到安装软件时才暴露。按这个流程做,新机器从开通到能正常安装软件,通常只需要几分钟。