12

如果我在 %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/ 目录设置所有者?

谢谢。

4

2 回答 2

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 指令允许您添加目录,但不能添加其内容。

于 2012-04-03T10:33:40.873 回答
5

正如其他“超级乐于助人”的人所说...%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
于 2013-06-05T22:43:59.363 回答