安装安装要求 RPM 规范

Install installation requirements RPM spec

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

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 本身的构建时间。

安装依赖项将在您安装生成的包时自动安装。 yum(或 zypper)会自动为您管理。

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

如果您想在连续测试环境中针对 python and/or python3 测试您构建的 .rpm,那么您可以简单地 运行 rpmtest 模式安装并检查结果。您必须使用 rpm,因为 yum 不提供 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