22

创建 RPM 时,RPM 规范文件有一个指令%defattr. 我知道它定义了该 RPM 安装的文件的默认属性。如果我写%defattr如下,这是什么意思?

%defattr(-testuser, testuser)
4

2 回答 2

31

您指定的模式无效。%defattr 接受四个参数

来自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. 默认组 ID。

  4. 目录的默认权限或“模式”。

%attr 指令具有以下格式:

%defattr(文件模式、用户、组、目录模式)

与 %attr 一样,如果不需要指定特定属性(通常是因为文件安装时该属性设置正确),则该属性可以用破折号替换。此外,可以省略目录模式。%defattr 往往用在 %files 的顶部。

于 2011-08-16T05:28:32.450 回答
7

要在规范文件中设置权限和所有权,因此将目录视为文件... %defattr 将设置所有没有 %attr 的文件(在这种情况下,rww owner apache group 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
于 2013-06-05T22:36:10.843 回答