Centos 在rpm.spec文件中检测平台
我有一个.spec文件来为Fedora、CentOS和Oracle Linux构建rpm。我需要为内核包安装卸载后触发器。为了在Oracle Linux上实现这一点,我需要在我的规范文件中添加如下内容:Centos 在rpm.spec文件中检测平台,centos,package,rpm,Centos,Package,Rpm,我有一个.spec文件来为Fedora、CentOS和Oracle Linux构建rpm。我需要为内核包安装卸载后触发器。为了在Oracle Linux上实现这一点,我需要在我的规范文件中添加如下内容: %triggerpostun -- kernel-uek %(cat %{SOURCE1001}) %if 0%{?fedora} %triggerpostun -- kernel-core %else %if 0%{?ol7} %triggerpostun -- kernel-uek %el
%triggerpostun -- kernel-uek
%(cat %{SOURCE1001})
%if 0%{?fedora}
%triggerpostun -- kernel-core
%else
%if 0%{?ol7}
%triggerpostun -- kernel-uek
%else
%triggerpostun -- kernel
%endif
%endif
%(cat %{SOURCE1006})
在CentOS上,该包称为内核,在Fedora上称为内核内核。我的问题是,如何以可移植的方式在spec文件中指定触发器(以便它可以在所有这些目标平台上工作),而不进行任何复制
编辑:关于我尝试过的内容的一些信息-我尝试将以下内容放入我的规范文件中:
%triggerpostun -- kernel-uek
%(cat %{SOURCE1001})
%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上正确的包名是内核
我完全不知道如何包装,所以如果您需要更多的上下文来提供建议,请告诉我。我认为多个
%的问题都是由其他引起的。我会这样定义条件:
%if 0%{?fedora}
%define kernelpkgname kernel-core
%endif
%if 0%{?ol7}
%define kernelpkgname kernel-uek
%endif
%if 0%{?rhel} >= 6
%define kernelpkgname kernel
%endif
然后使用triggerposton
中的kernelpkgname
变量
%postun
....
%triggerpostun -- %{kernelpkgname}
cat %{SOURCE1006}
我在这里看不到:在这里看:。这并不是说你的解决方案是错误的(我没有测试它),但最终我选择了类似于%triggerposton--kernel,kernel core,kernel uek…
的方法,因为内核包名在这些发行版中是唯一的。