【发布时间】:2017-11-28 09:59:13
【问题描述】:
我有一个 .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。
我完全是包装新手,所以如果您需要更多上下文来提供建议,请告诉我。
【问题讨论】: