必须安装yum-plugin-priorities插件并启用,所有启用仓库需显式设置priority值(越小优先级越高),修改后须执行yum clean all && yum makecache刷新缓存才能生效。

必须先装 yum-plugin-priorities 插件
CentOS 7 默认不启用仓库优先级功能,光改 priority= 参数没用。不装插件,yum 完全忽略 priority 字段。
装插件前先确认是否已存在:
yum list installed | grep priorities
没输出就装:
yum install -y yum-plugin-priorities
装完检查插件是否启用:
cat /etc/yum/pluginconf.d/priorities.conf
确保里面是:
[main] enabled=1
如果 enabled=0 或文件不存在,手动创建或修改为 enabled=1。
/etc/yum.repos.d/ 里每个 .repo 文件都要设 priority
只给某个仓库(比如 [base])加 priority 不够——yum 是按整个 repo 文件生效的,同一个文件里多个 section 共享同一优先级逻辑,但插件会逐 section 比较。
常见错误:只改了 CentOS-Base.repo 里的 [base],却忘了 [updates] 和 [extras],结果更新时还是从低优先级仓库拉包。
- 数值越小,优先级越高(不是越大):建议
priority=1给可信主源,priority=10给 EPEL,priority=20给第三方源 - 所有启用的仓库(
enabled=1)都应显式设置priority,否则插件可能拒绝操作并报错:Warning: Skipping unreadable repository 'xxx'或直接跳过该仓库 - 本地镜像源(如挂载 ISO 的
CentOS-Media.repo)建议设priority=1,但要确保gpgcheck=0或已导入对应 GPG key,否则校验失败会中断安装
用 yum-config-manager --setpref 修改优先级容易踩坑
这个命令看似方便,但它依赖 yum-utils 包,且只写入 .repo 文件的末尾注释区,不保证覆盖已有 priority 行。实测中常出现“执行成功但实际没生效”。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
更可靠的做法是直接编辑文件:
sed -i '/^\[/a\priority=1' /etc/yum.repos.d/CentOS-Base.repo
但注意:这会在每个 section 开头插入,需人工核对位置;推荐用 vi 手动加在每个 [xxx] 下一行,例如:
[base] name=CentOS-$releasever - Base baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 priority=1
别漏掉 gpgcheck 和 gpgkey 配置——改源后若 key 路径不对或 key 丢失,yum install 会卡在签名验证,报错:GPG key retrieval failed。
yum clean all && yum makecache 不是可选步骤
改完所有 .repo 文件和插件配置后,必须强制刷新缓存。否则 yum repolist 显示的仍是旧元数据,priority 不参与排序。
执行顺序不能颠倒:
yum clean all yum makecache
验证是否生效:
yum repolist --verbose | grep -A2 'Repo-id'
你会看到每行末尾带 priority=N,且数字与你设置一致。如果某 repo 没显示 priority,说明它没被插件识别——大概率是该 repo 文件里缺 enabled=1,或插件没启用,或 priority 写错位置(比如缩进、写在注释后)。
真正起作用的是插件 + 显式 priority + 缓存重建三者同时到位。少一个,yum 就退回“谁先响应谁上”的随机行为。










