安装安装要求 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
,那么您可以简单地 运行 rpm
以 test
模式安装并检查结果。您必须使用 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
假设我有一个看起来像这样的规范文件:
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
,那么您可以简单地 运行 rpm
以 test
模式安装并检查结果。您必须使用 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