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指令允许您添加目录,但不添加其内容.
小智 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)