我需要为包中的一个主要目录指定公共属性,并为其中一些子目录指定特殊权限。 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
下的所有内容来解决这个问题。还有其他方法吗?感谢
答案 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
,因为你不想拥有它。