如何在 rpmbuild 规范文件中检查操作系统版本

Posted

技术标签:

【中文标题】如何在 rpmbuild 规范文件中检查操作系统版本【英文标题】:How to check os version in rpmbuild spec file 【发布时间】:2016-01-21 18:19:20 【问题描述】:

我正在构建一个需要检查操作系统版本的 rpm。如果是 rhel5 或 rhel6,那么它会工作,否则它将停止。 请指教我该怎么做。

感谢和问候。

【问题讨论】:

fedoraproject.org/wiki/Packaging:DistTag 有用吗? 可能是这样的:unix.stackexchange.com/questions/9296/… 我正在 Centos 5 上构建 rpm,但以下内容不起作用:%if 0%?rhel == 5 请有任何想法。 【参考方案1】:

您可以使用https://unix.stackexchange.com/questions/9296/how-can-i-specify-os-conditional-build-requirements-in-an-rpm-spec-file 然而,这只决定了构建时包内部的内容。而且你仍然可以在 el5 上安装 el6 包,反之亦然。

所以如果你想在实际安装过程中决定,你需要解析 /etc/os-release(IIRC 只存在于 el7+)或 /etc/redhat-release。

【讨论】:

【参考方案2】:

使用uname 命令和解析信息的另一种替代用法

节省时间执行以下操作:

uname -r | cut -d '.' -f6

这在 RHEL 6 和 7 中有效。

【讨论】:

你的答案应该改写。这不是很清楚。请在发布前阅读 SO 指南。【参考方案3】:

您可以运行cat /etc/issue 并根据需要进行解析

【讨论】:

/etc/issue(至少在我的系统上)具有可替换的参数。我认为您不能使用此文件可靠地确定操作系统版本

以上是关于如何在 rpmbuild 规范文件中检查操作系统版本的主要内容,如果未能解决你的问题,请参考以下文章

rpmbuild %dist 没有在 CentOS 5.5 上定义?

如何将用户定义的参数传递给 rpmbuild 以填充变量

将 Qt 依赖项添加到 rpmbuild 中的规范文件

spec文件写作规范

rpmbuild SPEC语法

Linux操作系统使用RPMBUILD命令打包RPM的详细步骤