如何在rpmbuild SPEC文件中正确使用%排除宏?

时间:2015-06-24 22:25:57

标签: linux configuration-files rpm rpmbuild

在SPEC文件中考虑以下内容:

%files
%defattr(-,bubba,users,-)
...
%attr(-,root,users) %{_localstatedir}/foo/
%config %attr(-,root,root) %{_localstatedir}/foo/blah.crap

我想要在foo下包含所有文件,但也要将blah.crap标记为配置文件(其权限可能与foo不匹配)。这样做会导致rpmbuild抱怨该文件被列出两次。

我尝试在上面的最后两行之间添加以下内容:

%exclude %{_localstatedir}/foo/blah.crap

然而,这似乎永久地覆盖任何其他包含,因为尽管下一个%config行应该包含该文件(现在作为配置文件),blah.crap执行安装RPM时不安装

那么正确的方法是什么?只是忽略来自rpmbuild的警告是BS答案,就像#34;只需列出foo中的所有文件而不是列出整个目录"。

1 个答案:

答案 0 :(得分:0)

最佳解决方案是在%install中使用find(1)创建文件清单,并使用sed(1)添加%config或以其他方式过滤清单。