在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
中的所有文件而不是列出整个目录"。
答案 0 :(得分:0)
最佳解决方案是在%install中使用find(1)创建文件清单,并使用sed(1)添加%config或以其他方式过滤清单。