Что означает% defattr в файлах спецификаций RPM? - PullRequest
20 голосов
/ 05 августа 2011

При создании RPM файлы спецификации RPM имеют директиву %defattr.Я знаю, что он определяет атрибуты по умолчанию для файлов, которые установлены этим RPM.Если я напишу %defattr, как показано ниже, что это значит?

%defattr(-testuser, testuser)

Ответы [ 2 ]

26 голосов
/ 16 августа 2011

Указанный вами режим недействителен.% defattr принимает четыре аргумента

From http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-DEFATTR-DIRECTIVE

Директива% defattr

Директива% defattr позволяет устанавливать атрибуты по умолчанию для файлов и директив.% Defattr имеет формат, аналогичный директиве% attr:

  1. Разрешения по умолчанию или «режим» для файлов.

  2. Идентификатор пользователя по умолчанию.

  3. Идентификатор группы по умолчанию.

  4. Разрешения по умолчанию или «режим» для каталогов.

Директива% attr имеет следующий формат:

% defattr (режим файла, пользователь, группа, режим dir)

Как и в случае% attrесли конкретный атрибут указывать не нужно (обычно потому, что файл установлен с правильно установленным атрибутом), этот атрибут может быть заменен тире.Кроме того, режим каталога может быть опущен.% defattr обычно используется в верхней части% файлов.

7 голосов
/ 06 июня 2013

Чтобы установить права доступа и владельца в файле спецификации, обработайте каталог как файл таким образом ... % defattr установит все файлы без% attr (в этом случае владелец apache группы rww apache и установит для каталогов значение 755).

%files
#%attr(<mode>, <user>, <group>) file
%defattr(644,apache,apache,755)
%attr(-,apache,apache) /var/www/coolapp
%attr(-,apache,apache) /var/www/coolapp/js
%attr(-,apache,apache) /var/www/coolapp/static
/var/www/coolapp/index.html
/var/www/coolapp/__init__.py
/var/www/coolapp/settings.py
/var/www/coolapp/urls.py
/var/www/coolapp/wsgi.py
...