如何在%files文件中设置目录的所有者?

时间:2012-04-01 09:54:50

标签: rpm rpmbuild rpm-spec

如果我在%files中有这一行:

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

然后my.jar将myuser作为所有者,但目录/ opt / myapp / lib将由root用户拥有。 我不想写

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

因为我不希望包含/ opt / myapp / lib /中的所有文件。

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

感谢。

2 个答案:

答案 0 :(得分:20)

我不是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 :(得分:4)

正如其他“超级乐于助人”的人所说...%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