You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用yum或versionlock忽略特定仓库关联的软件包?(解决dnf-automatic因Ansible多版本依赖冲突启动失败问题)

如何使用yum或versionlock忽略特定仓库关联的软件包?(解决dnf-automatic因Ansible多版本依赖冲突启动失败问题)

我来帮你搞定这个dnf-automatic因为Ansible版本冲突崩掉的问题~先理清楚根源:你的RHEL8系统里现在有两个Ansible版本可选——一个是来自ansible-2-for-rhel-8-rhui-rpms仓库的2.9.27,另一个是EPEL仓库的8.3.0,dnf-automatic在自动更新时因为依赖关系打架,直接启动失败了。下面给你几个实用的解决办法,按需挑选就行:

方法一:直接排除特定仓库的Ansible包

如果你想固定使用ansible-2-for-rhel-8-rhui-rpms仓库的版本,不想让EPEL的Ansible包干扰,最简单的办法就是把EPEL里的Ansible包直接排除:

  • 打开EPEL的仓库配置文件:vi /etc/yum.repos.d/epel.repo
  • 在[epel]段落里添加一行:exclude=ansible*(星号是为了排除所有ansible相关的包)
  • 保存退出后,刷新dnf缓存:dnf clean all && dnf makecache
  • 最后重启dnf-automatic并验证状态:
systemctl restart dnf-automatic
systemctl status dnf-automatic

方法二:用versionlock锁定当前在用的Ansible版本

如果已经确定了要保留的Ansible版本,直接用versionlock插件把它锁死,dnf就不会再尝试升级到其他版本了:

  1. 先安装versionlock插件:
dnf install python3-dnf-plugin-versionlock -y
  1. 查看当前系统已安装的Ansible版本:
rpm -q ansible

会输出类似ansible-2.9.27-1.el8ae.noarch的结果
3. 锁定这个版本:

dnf versionlock add ansible-2.9.27-1.el8ae.noarch

(如果想锁定所有ansible相关的包,也可以用dnf versionlock add ansible*)
4. 刷新缓存后重启dnf-automatic,验证是否恢复正常

方法三:通过仓库优先级指定优先版本

这种方法适合你想保留多个仓库,但让系统优先选择特定仓库的包:

  1. 先安装dnf优先级插件:
dnf install dnf-plugin-priority -y
  1. 找到ansible-2-for-rhel-8-rhui-rpms仓库的配置文件(一般在/etc/yum.repos.d/目录下),打开后在对应的仓库段落里添加:
priority=1

(数字越小优先级越高,默认优先级是99,所以设为1能确保它优先被选择)
3. 打开EPEL的repo配置文件,在[epel]段落里添加:

priority=10

让它的优先级低于ansible专属仓库
4. 刷新缓存,重启dnf-automatic即可解决冲突

备注:内容来源于stack exchange,提问作者John R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 08:54:30