我有一个rpm.spec文件,其中我必须为文件提供文件权限。
我希望%attr在rpm安装期间获取$user和$group的值(我将在其中执行“导出user=”和“导出group="),但它不获取这些值,而是在安装rpm时给出一个语法错误。
在我的specfile中有类似这样的东西
%pre
%files
%defattr(-,root,root,-)
<some_path>
%config /etc/akshatha
%doc /usr/share/doc/akshatha
%attr(0700,$user,$group) %dir directory_path
%attr(0700,$user,$group) %dir directory_path
%attr(0600,$user,$group) path_to_file
这给了我一个错误,当我安装rpm时-
warning: user $user does not exist - using root
warning: group $group does not exist - using root
我甚至尝试给%attr(0700,%{getenv:user},%{getenv:group}),但在准备rpm时失败
RPM build errors:
Bad syntax: %attr(0700)
make: *** [all] Error 1
发布于 2019-05-22 06:16:08
这是不可能的。%attr
是在构建时修复的;您特别要求“在rpm安装期间”,但这不会起作用。
在你的%post
中,你可以使用chown
,但是这会破坏你的验证。
发布于 2019-05-22 17:56:26
正如其他人指出的那样,这种方式是不可能的。考虑到您正在尝试实现的目标,我会这样做:
%pre
getent group GROUPNAME >/dev/null || groupadd -r GROUPNAME
%files
%config /etc/akshatha
%doc /usr/share/doc/akshatha
%attr(0770,root, GROUPNAME) %dir directory_path
...
然后我会指示管理员将该用户放入组GROUPNAME中。
https://stackoverflow.com/questions/56233258
复制相似问题