gpt4 book ai didi

centos - 在 rpm .spec 文件中检测平台

转载 作者:行者123 更新时间:2023-12-04 19:43:17 27 4
gpt4 key购买 nike

我有一个 .spec 文件来为 Fedora、CentOS 和 Oracle Linux 构建 rpm。我需要为内核包安装一个卸载后触发器。为了在 Oracle Linux 上实现这一点,我需要在我的规范文件中添加如下内容:

%triggerpostun -- kernel-uek
%(cat %{SOURCE1001})

在 CentOS 上,这个包叫做 kernel,在 Fedora 上叫做 kernel-core。我的问题是,如何以可移植的方式在我的规范文件中指定触发器(以便它适用于所有这些目标平台),而没有任何重复?

编辑:关于我尝试过的一些信息 - 我尝试将以下内容放入我的规范文件中:
%if 0%{?fedora}
%triggerpostun -- kernel-core
%else
%if 0%{?ol7}
%triggerpostun -- kernel-uek
%else
%triggerpostun -- kernel
%endif
%endif
%(cat %{SOURCE1006})

但在 CentOS 上,这给了我这样的触发器:
triggerpostun scriptlet (using /bin/sh) -- kernel-uek
for filename in /boot/*.ksplice-updates*; do
if [[ -h $filename && ! -e $filename ]]; then
rm $filename
fi
done

这是错误的,因为 CentOS 上正确的软件包名称是 kernel。

我完全是包装新手,所以如果您需要更多上下文来提供建议,请告诉我。

最佳答案

我假设多个 %else正在引起问题。我会这样定义条件:

%if 0%{?fedora}
%define kernelpkgname kernel-core
%endif

%if 0%{?ol7}
%define kernelpkgname kernel-uek
%endif

%if 0%{?rhel} >= 6
%define kernelpkgname kernel
%endif

然后使用 kernelpkgname triggerpostun 中的变量.
%postun
....

%triggerpostun -- %{kernelpkgname}
cat %{SOURCE1006}

关于centos - 在 rpm .spec 文件中检测平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com