什么rpmbuild警告“文件列出两次”实际上意味着什么?

时间:2012-12-25 12:52:20

标签: installation rpm rhel rpmbuild software-packaging

我需要为包中的一个主要目录指定公共属性,并为其中一些子目录指定特殊权限。 e.g。

%files
%attr(-, myuser, mygroup) /opt/myapp 
%attr(750, myuser, mygroup) /opt/myapp/bin  # no exec permission to other
/etc  # this is the reason I can't use %defattr(-, myuser, mygroup)

我自然会在/ opt / myapp / bin下的每个文件上收到“两次列出文件”的警告。我的问题是,它究竟意味着什么? rpmbuild用它做什么?我无法在任何地方找到答案。我可以忽略它吗?什么优先,第一次或最后一次出现?

我不想明确列出myapp下的所有内容来解决这个问题。还有其他方法吗?感谢

3 个答案:

答案 0 :(得分:9)

我在这里张贴以防万一有人遇到同样的问题并找到这个老问题。

最近(最近取决于发行版)宏%排除已添加到rpmbuild。

%files
%attr(-, myuser, mygroup) /opt/myapp
%exclude /opt/myapp/bin
%attr(750, myuser, mygroup) /opt/myapp/bin  # no exec permission to other

此处的优势并不像要排除一组文件或文件夹那样明显:

%files
%attr(-, myuser, mygroup) /opt/myapp
%exclude /opt/myapp/[bin|data|whatever]
%attr(750, myuser, mygroup) /opt/myapp/bin  # no exec permission to other
%attr(777, myuser, myothergroup) /opt/myapp/data
%attr(640, myuser, myothergroup) /opt/myapp/whatever

奇怪的是[a | b]语法适用于%exclude,但不适用于%files中的其他指令(例如,我可以使用正则表达式排除但不包括,doh)

答案 1 :(得分:8)

将其更改为:

%files
%dir %attr(-, myuser, mygroup) /opt/myapp
%attr(750, myuser, mygroup) /opt/myapp/bin

注意目录的%dir。这应该摆脱两次列出的文件警告。

答案 2 :(得分:5)

这意味着 - 它被列出两次。 ;)我从来没有遇到任何问题,但我不知道哪个会赢。

作为旁注,你可能不应该单独列出/etc,因为你不想拥有它。