首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >rpmbuild需要根据安装rpm的操作系统版本而定。

rpmbuild需要根据安装rpm的操作系统版本而定。
EN

Stack Overflow用户
提问于 2021-01-25 11:52:11
回答 1查看 1.1K关注 0票数 0

我正在用rpmbuild构建一个rpm。已经构建的rpm将安装在rhel6、rhel7或rhel8机器上。在rhel8上,需要其他发行版(rhel6和rhel7)中不需要的一些依赖项。然后,在包名上使用一个条件(如下所示)并不是一个选项。

代码语言:javascript
运行
复制
Requires: (pkgA >= 3.2 or pkgB)

我想在spec文件中做的事情如下:

代码语言:javascript
运行
复制
%if %{VERSIONMAJOS} < 8
Requires: sssd >= 1.15 , sudo >= 1.8.6p3
%else
Requires: sssd >= 1.15 , sudo , oddjob , oddjob-mkhomedir
%endif

如何定义变量VERSIONMAJOS?我不能使用宏%{https://unix.stackexchange.com/questions/9296/how-can-i-specify-os-conditional-build-requirements-in-an-rpm-spec-file}(如这里所示),因为该变量是在构建rpm期间定义的(如果我正确理解DistTag页面https://fedoraproject.org/wiki/Packaging:DistTag)。当我在rhel6、rhel7或rhel8上使用命令rhel7时,我需要的是不同的库要求。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-25 19:09:43

使用%{?rhel}宏。在基于RHEL的发行版中,它将等同于主要发行版。它通常与前导0一起使用,以便当规范文件更有可能在未定义的其他发行版上成功构建时。

代码语言:javascript
运行
复制
%if 0%{?rhel} < 8
Requires: sssd >= 1.15 , sudo >= 1.8.6p3
%else
Requires: sssd >= 1.15 , sudo , oddjob , oddjob-mkhomedir
%endif

对于每个具有不同的Requires集的发行版,您需要构建一个单独的RPM包。

基于分布的动态需求是不可能的。这不是RPM的工作方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65884208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档