CentOS 8安装Ansible出现ansible-core版本依赖报错如何处理
CentOS 8 已到达生命周期终止(EOL)阶段,官方不再维护新软件包与安全更新,所有软件源已迁移至vault.centos.org,必须先替换系统内置的CentOS-*系列软件源,才可正常安装epel-release依赖包,进而完成Ansible部署。
前置操作:替换系统软件源
- 备份原有源配置文件,避免配置出错无法回滚
mkdir -p /etc/yum.repos.d/repo_backup && mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/repo_backup/ - 新建基础源配置,将源地址指向CentOS官方归档站点,替换所有原有mirror.centos.org路径为vault.centos.org对应路径
- 重建dnf缓存
dnf clean all && dnf makecache
安装epel-release依赖
直接执行dnf命令安装epel源包:dnf install -y epel-release
安装完成后再次重建缓存,确保epel源配置生效:dnf clean all && dnf makecache
安装Ansible及依赖报错解决
2022年6月起,完成epel-release安装后直接执行Ansible安装操作,会出现如下依赖报错:
nothing provides (ansible-core >= 2.12.2 with ansible-core < 2.13) needed by ansible-5.4.0-2.el8.noarch
(可尝试添加'--skip-broken'参数跳过无法安装的软件包,或添加'--nobest'参数不局限于选用最佳候选软件包版本)
该报错成因是EPEL源内推送的ansible-5.4.0版本依赖指定版本区间的ansible-core组件,但当前归档源、EPEL源内均无匹配该版本区间的安装包,直接添加--skip-broken参数会导致Ansible核心组件缺失无法运行,正确安装方式为执行安装命令时携带--nobest参数,自动选择依赖匹配的可用Ansible版本安装:dnf install -y ansible --nobest
安装完成后执行版本查询命令,返回正常版本信息即代表安装成功:ansible --version
内容的提问来源于stack exchange,提问作者Kenot Solutions

