rpmbuild构建ansible.spec时出现%python_provide标签识别错误如何解决
报错原因
%python_provide宏本身属于合法RPM宏,报错python3-ansible not recognized来自宏的内部校验逻辑,触发原因有三类:
- 系统安装的
python-rpm-macros包版本过低,自带的宏逻辑无法识别通过%package -n自定义命名的Python3子包 - 当前spec的主包命名为
python-ansible,但未配置主包的实际安装文件,所有有效内容都归属python3-ansible子包,旧版宏无法适配这种主包为空的结构 - 部分发行版的宏配置要求
%python_provide的参数必须对应主包名,无法直接识别子包名
解决方案
按优先级从高到低选择即可:
- 直接删除spec文件第29行的
%{?python_provide:%python_provide python3-%{pypi_name}}代码。当前主流版本的RPM Python宏会在执行%py3_install时自动生成对应的Provides兼容条目,不需要手动声明该配置,删除后即可正常编译。 - 若需兼容老旧系统保留该宏,调整spec结构:将主包名改为
python3-%{pypi_name},删除单独声明的%package -n python3-%{pypi_name}子包段,把原本归属子包的Summary、Requires、%description等配置合并到主包配置中,宏即可正常识别。 - 升级系统的RPM Python依赖包:执行
yum install -y python3-rpm-macros python-rpm-macros升级到最新版本,修复旧版宏的识别缺陷。
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

