Изменение поведения %defattr между об/мин 4.7.2 и 4.9.1?

Можно ли использовать %defattr несколько раз в файле спецификаций? В Ubuntu 10 (версия RPM 4.7.1) следующее определение приведет к применению разрешений 777 к /var/log/testdir2.

%files
%defattr(-,root,root,-)
%dir /var/log/testdir1
%defattr(777,root,root,-)
%dir /var/log/testdir2
%dir %attr(777,root,root) /var/log/testdir3

После обновления до Ubuntu 12.04.1 (x86_64RPM версии 4.9.1.1) регенерация rpm с тем же файлом спецификации и развертывание на той же целевой машине привели к тому, что /var/log/testdir2 имеет права 755. Я необходимо изменить файл спецификации, чтобы определить %attr, как в /var/log/testdir3 выше, чтобы получить желаемые разрешения.

В файле спецификации было определение %defattr, за которым следовал набор файлов с этими разрешениями, затем еще одно определение %defattr, за которым следовал набор файлов с этими разрешениями. Разве это не разрешено? Или есть разница между тем, как каталоги и файлы обрабатываются в отношении разрешений?


person Glenn    schedule 28.08.2013    source источник


Ответы (1)


%defattr обычно используется для установки атрибутов по умолчанию для файлов/каталогов, поэтому его многократное использование кажется мне странным. Сначала давайте посмотрим на значения %defattr: %defattr(file perms, user, group, dir perms). Так что, вероятно, каталог /var/log/testdir3 имеет права доступа 755 в вашем архиве, поскольку вы не устанавливаете права доступа к каталогу, а просто наследуете их.

Попробуйте что-то вроде этого:

%files
%defattr(755,root,root,777)
%dir /var/log/testdir1
%dir /var/log/testdir2
%dir /var/log/testdir3

Используя то, что я указал выше, он установит для каталогов значение 777, а затем установит для всех файлов, которые вы перечисляете, значение 755, потому что он наследует значения по умолчанию (оба с правами root.root).

Я все еще немного сбит с толку тем, почему вы устанавливаете разрешения для каталога журнала на 777, поскольку, когда вы объявляете% dir, он устанавливает только разрешения для каталога. Вы не пытаетесь установить файлы во что-то? Если вам нужен определенный каталог с другими разрешениями, вы должны использовать атрибут %attr.

person Forrest    schedule 01.09.2013
comment
Спасибо за ответ. Вы правы, установка 4-го параметра, права доступа, делает то, что я хочу. У меня есть группы каталогов (без файлов) с разными разрешениями. Каждая группа имеет префикс с другим параметром %defattr. Поведение моего rpm изменилось после недавнего обновления ОС (новая версия rpmbuild), но, похоже, я с самого начала неправильно использовал %defattr. Спасибо. - person Glenn; 03.09.2013