【发布时间】:2015-09-11 08:12:57
【问题描述】:
在 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 答案,就像“只列出 foo 中的所有文件而不是列出整个目录”。
【问题讨论】:
-
你立即拒绝的两件事是我知道的关于这个问题的唯一答案。
-
@EtanReisner 如果我只是忽略警告,那么 RPM 的行为是什么?该文件是否被视为配置文件,行为是否取决于它“列出两次”的顺序,还是什么?
-
好问题,我不知道。您想转储生成的 rpm 文件以找出(并测试不同的命令等)以确定是否知道。但看起来在 rpm 4.4.2.3 的源代码中,条目似乎已合并(在 rpm 4.9.1.3 中似乎仍然如此)。
标签: linux configuration-files rpm rpmbuild