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

Era*_*tan 12 rpm rpmbuild rpm-spec

如果我在%文件中有这一行:

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
Run Code Online (Sandbox Code Playgroud)

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

%attr(0555, myuser, myuser) /opt/myapp/lib/
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Jav*_*uru 20

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

%files
%dir %attr(0555, myuser, myuser) /opt/myapp/lib
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
Run Code Online (Sandbox Code Playgroud)

或者,甚至更简单:

%files
%defattr(555,myuser,myuser,555)
%dir /opt/myapp/lib
/opt/myapp/lib/my.jar
Run Code Online (Sandbox Code Playgroud)

%dir指令允许您添加目录,但不添加其内容.

  • 不,这不是真的.(参见文档:http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html):%dir指令用于指示RPM仅打包目录本身,无论在创建包时目录中可能包含哪些文件. (4认同)

小智 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
Run Code Online (Sandbox Code Playgroud)