Ответ 1
Это означает, что это - оно указано дважды.;) У меня никогда не было проблем с этим, но я не знаю, что победит.
В качестве побочного примечания вы, вероятно, не должны перечислять /etc
самостоятельно, так как вы не хотите владеть этим.
Мне нужно указать общие атрибуты для одного из основных каталогов в пакете и специальное разрешение для некоторых из его поддиректоров. например.
%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
явно, чтобы решить эту проблему. Есть ли другой путь? Благодаря
Это означает, что это - оно указано дважды.;) У меня никогда не было проблем с этим, но я не знаю, что победит.
В качестве побочного примечания вы, вероятно, не должны перечислять /etc
самостоятельно, так как вы не хотите владеть этим.
Я публикую здесь на всякий случай, если кто-то имеет такую же проблему и находит этот старый вопрос.
Недавно (как недавно зависит от дистрибутива) макрос% exclude был добавлен в 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, но не с другими директивами в% файлов (например, я могу использовать регулярное выражение для исключения, но не для включения, doh)
Измените его так:
%files
%dir %attr(-, myuser, mygroup) /opt/myapp
%attr(750, myuser, mygroup) /opt/myapp/bin
обратите внимание на %dir
для каталога. Это должно избавиться от файлов, перечисленных дважды дважды.