%defattr在RPM规范文件中的含义是什么?

时间:2011-08-05 06:39:07

标签: permissions rpm rpm-spec specfiles

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

%defattr(-testuser, testuser)

2 个答案:

答案 0 :(得分:26)

您指定的模式无效。 %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.   
  5. 默认组ID。

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

  8.         

    %attr指令具有以下格式:

         

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

         

    与%attr一样,如果特定属性不需要   指定(通常是因为文件安装了它   属性设置正确),然后该属性可以替换为   短跑。另外,可以省略目录模式。 %defattr倾向于   在%文件的顶部使用。

答案 1 :(得分:7)

要在spec文件中设置权限和所有权,请将目录视为文件... %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