首页 > 解决方案 > 安装安装要求 RPM 规范

问题描述

假设我有一个看起来像这样的规范文件:

Name: mypackage
Version: 1.0.0
BuildRequires: cmake
%if 0%{?rhel} >= 7 || 0%{?fedora} >=17
Requires: python3
%else
Requires: python
%endif

我知道yum-builddep要根据规范安装我的构建依赖项,我真的很想要一个yum-installdep. 鉴于规范文件中有一些逻辑,有人知道一种简单的方法来完成我想要的吗?

编辑:

我也知道我可以构建 RPM,然后安装它,然后卸载它,但我是在持续测试环境的上下文中执行此操作的,所以我真的很想安装依赖项来保存构建RPM 本身的时间。

标签: rpmyumrpm-spec

解决方案


简单的回答,不。rpmbuild构建一个规范,当你有一个 时Requires,它只在运行时而不是在构建期间检查它。仅BuildRequires在构建期间进行检查。runtime正如您spec所建议的那样,您可以在一个或多个环境的单个模拟环境中构建一个 rpm 。

如果您想测试您的构建.rpmpython/或python3连续测试环境,那么您可以简单地rpm在模式下运行安装test并检查结果。您必须使用rpmasyum不提供dry-run模式。

$ rpm -Uvh --test mypackage.rpm

或者

$ rpm -qp --requires mypackage.rpm

mypackage.rpm以上将告诉您在给定环境中需要哪些软件包。根据您的spec文件,如果您在模拟测试环境中运行上述命令Fedora 17+/RHEL7,它会告诉您它需要python3,否则python2

$ rpm -q --requires python3-setuptools | grep python
/usr/bin/python3
python(abi) = 3.6

$ rpm -q --requires python2-setuptools | grep python
/usr/bin/python2
python(abi) = 2.7

推荐阅读