rpm - 安装安装要求 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 本身的时间。
解决方案
简单的回答,不。rpmbuild
构建一个规范,当你有一个 时Requires
,它只在运行时而不是在构建期间检查它。仅BuildRequires
在构建期间进行检查。runtime
正如您spec
所建议的那样,您可以在一个或多个环境的单个模拟环境中构建一个 rpm 。
如果您想测试您的构建.rpm
和python
/或python3
连续测试环境,那么您可以简单地rpm
在模式下运行安装test
并检查结果。您必须使用rpm
asyum
不提供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
推荐阅读
- java - 使用 OpenID 连接的 Spring Security 5 上的 oidc_provider_not_configured 错误消息
- tfs - 为什么在 Visual Studio 2019 (v16.6.5) 中的解决方案上获取最新版本(递归)会下载整个分支?
- r - R 脚本 CLI 参数
- uml - UML/SysML:派生属性的 OCL 规范,计算特定关系/刻板印象的数量
- css - 试图让文本在波浪中移动,但它不起作用
- python - 在哪里可以找到 PyCharm 源方法签名?
- java - 在ConcurrentHashMap的传递方法中,没看懂“i >= n”和“i + n >= nextn”这两个条件的意思
- r - 试图在 R 中选择列,但它只假设行
- javascript - NestJS - 使用装饰器查找用户
- python - Python - 如何使用函数的文档字符串和代码示例