rpmbuild需要取决于安装rpm的操作系统版本



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

Requires: (pkgA >= 3.2 or pkgB)

我想在规范文件中做的是:

%if %{VERSIONMAJOS} < 8
Requires: sssd >= 1.15 , sudo >= 1.8.6p3
%else
Requires: sssd >= 1.15 , sudo , oddjob , oddjob-mkhomedir
%endif

如何定义变量versionmajor ?我不能使用宏%{rhel}(如这里所示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上使用命令yum -y nameOfRmp.rpm时,库需求是不同的。

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

%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的工作方式。

最新更新