Что предупреждает rpmbuild "Файл, указанный дважды" В НАСТОЯЩЕЕ ВРЕМЯ?

Мне нужно указать общие атрибуты для одного из основных каталогов в пакете и специальное разрешение для некоторых из его поддиректоров. например.

%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 явно, чтобы решить эту проблему. Есть ли другой путь? Благодаря

Ответ 1

Это означает, что это - оно указано дважды.;) У меня никогда не было проблем с этим, но я не знаю, что победит.

В качестве побочного примечания вы, вероятно, не должны перечислять /etc самостоятельно, так как вы не хотите владеть этим.

Ответ 2

Я публикую здесь на всякий случай, если кто-то имеет такую ​​же проблему и находит этот старый вопрос.

Недавно (как недавно зависит от дистрибутива) макрос% 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)

Ответ 3

Измените его так:

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

обратите внимание на %dir для каталога. Это должно избавиться от файлов, перечисленных дважды дважды.