2012-04-01 57 views
11

如果我有这条线在%文件:如何在%文件中设置目录的所有者?

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

然后my.jar将myuser的作为所有者,但目录/ opt/MyApp的/ lib目录将是根所有者。 我不想写

%attr(0555, myuser, myuser) /opt/myapp/lib/ 

,因为我不想在/ opt/MyApp的/ lib目录/要包含的所有文件。

如何设置/ opt/myapp/lib /目录的所有者?

谢谢。

回答

17

我不是RPM专家..但据我所知,如下您可以使用DIR%指令:

%files 
%dir %attr(0555, myuser, myuser) /opt/myapp/lib 
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

,或者更简单:

%files 
%defattr(555,myuser,myuser,555) 
%dir /opt/myapp/lib 
/opt/myapp/lib/my.jar 

的%dir指令允许你添加目录,但不能添加它的内容。

+1

%dir的目的是在目标机器上创建一个空目录(如日志目录)。 – 2012-04-03 12:33:31

+3

不,这是不正确的。 (请参阅文档:http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html):%dir指令用于指示RPM仅打包目录本身,而不管在创建软件包时哪些文件可能驻留在目录中。 – Javaguru 2012-04-03 12:46:56

+0

@Javaguru链接提供404 – sebix 2017-05-30 12:35:45

2

作为其他“超级有帮助”的人说...%dir是为了别的。解决的办法是使用%attr来设置你的目录的用户和组拥有者...因为我已经使用%defattr将我的目录设置为755我使用单个破折号 - 在%attr行说.. ..事情是这样的。

%files 
#%attr(<mode>, <user>, <group>) file 
#%defattr(file perms, user, group, dir perms) 
%defattr(644,apache,apache,755) 
%attr(-,apache,apache) /var/www/coolapp 
%attr(-,apache,apache) /var/www/coolapp/users 
%attr(-,apache,apache) /var/www/coolapp/static 
/var/www/coolapp/myDB.sqlite 
/var/www/coolapp/__init__.py 
/var/www/coolapp/settings.py 
/var/www/coolapp/urls.py 
/var/www/coolapp/wsgi.py 
相关问题