马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
CentOS 7 默认指向官方海外仓库,国内机器上装个包经常卡在下载、超时、半途失败。把 YUM 源换成国内镜像站,是拿到一台 CentOS 7 之后性价比最高的第一件事。这篇从配置文件结构讲起,给出阿里云的完整写法,再附清华、腾讯、华为、USTC 四家的地址速查。
一、先理解 YUM 和 .repo 文件
YUM(Yellowdog Updater, Modified)是 RPM 体系下的包管理器,负责安装、更新、卸载软件包并自动处理依赖。它的行为完全由 /etc/yum.repos.d/ 里的 .repo 文件描述,一个仓库分若干段:[base] 基础仓库、[updates] 更新仓库、[extras] 额外仓库,每段里最主要的就是 baseurl(仓库地址)和 gpgcheck(是否校验签名)。
二、动手前两件事
cat /etc/centos-release # 确认是 7.x
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
注意 CentOS 7 已经 EOL,官方 repo 里的 vault 路径和 mirrors 状态都变了,换国内源不仅提速,有时还是能不能装上包的关键。
三、改写 CentOS-Base.repo
sudo vi /etc/yum.repos.d/CentOS-Base.repo
以阿里云为例,把 [base] 段改成这样:
[base]
name=CentOS-$releasever-Base-mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
这里把 mirrorlist 那行注释掉、显式写 baseurl,因为镜像站的 mirrorlist 有时会让某些机型解析失败。
四、清缓存、建缓存
sudo yum clean all
sudo yum makecache
sudo yum repolist
repolist 能列出刚配的仓库就是成功了。缓存建好之后装包不会再走网络检索。
五、装一个小包验证
sudo yum install htop
下载速度飞起来、依赖解析不报错,就说明换源彻底生效了。顺手 yum remove htop 可以再验一次卸载链路。
六、updates 和 extras 要不要一起改
严格说 CentOS 7 的 default repo 里三个段都在同一个 Base 镜像下(os/updates/extras 路径),只改 [base] 通常就够了。但如果后续加了 epel 之类的第三方仓库,建议把三个段统一换到同一个镜像站,避免混合源导致 GPG 校验不一致。
七、五家镜像站地址速查
下表 $releasever 在 CentOS 7 上解析为 7,$basearch 通常是 x86_64,опа填的时候按自己系统改。
- 阿里云:base 用
http://mirrors.aliyun.com/centos/$releasever/os/$basearch/,updates 用 .../$releasever/updates/$basearch/,extras 用 .../$releasever/extras/$basearch/;
- 清华大学:
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/,updates、extras 类推;
- 腾讯云:
http://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch/;
- 华为云:
https://repo.huaweicloud.com/centos/$releasever/os/$basearch/(这个建议用 https);
- 中国科学技术大学:
http://mirrors.ustc.edu.cn/centos/$releasever/os/$basearch/。
选一家就行,别五家同时写:多个源并存时 makecache 会慢,而且滞后时间不一样容易踩坑。国内机器优先选物理位置近的,跨运营商时还可以把 baseurl 里的 http 换成 https 避免被劫持。
八、换完源之后的建议
- 顺便把
yum update 跑一遍, CentOS 7 EOL 后很多补丁只在 vault/vlatest 里;
- 需要 Nginx、Redis、Docker 这类不在基础源里的软件,另配对应官方仓库,不必塞进 Base;
- 写进自动化脚本前,先在测试机上
yum repolist -v 确认每个仓库都可用。
qidao123.com企服评测-应用市场 编辑提示 |