rpm.spec 中的 %attr 不采用环境变量的值
%attr in rpm.spec does not take env variable's value
我有一个 rpm.spec 文件,我必须在其中为文件授予文件权限。
我希望 %attr 在 rpm 安装期间获取 $user 和 $group 值。(我将在此处执行 "export user=" 和 "export group=")
但它不采用这些值,而是在安装 rpm 时给出语法错误。
我的规范文件中有这样的东西
%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
编辑: 正如@AaronD.Marasco所说:这是不可能的在rpm安装期间。如果你想在构建期间定义它;那么你可以这样进行:
您可以在调用时在命令行中定义宏 rpmbuild
:
在规范文件中:
%attr(0700,%{file_user},%{file_group}) /path/to/file
像这样调用rpmbuild
:
rpmbuild --define='file_user some_user' --define='file_group some_group'
这是不可能的。 %attr
在构建时固定;你特意要求 "during the rpm installation" 这行不通。
在您的 %post
中,您可以 chown
但这会破坏您的验证。
正如其他人指出的那样,这是不可能的。考虑到您要实现的目标,我会这样做:
%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。
我有一个 rpm.spec 文件,我必须在其中为文件授予文件权限。
我希望 %attr 在 rpm 安装期间获取 $user 和 $group 值。(我将在此处执行 "export user=" 和 "export group=") 但它不采用这些值,而是在安装 rpm 时给出语法错误。
我的规范文件中有这样的东西
%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
编辑: 正如@AaronD.Marasco所说:这是不可能的在rpm安装期间。如果你想在构建期间定义它;那么你可以这样进行:
您可以在调用时在命令行中定义宏 rpmbuild
:
在规范文件中:
%attr(0700,%{file_user},%{file_group}) /path/to/file
像这样调用rpmbuild
:
rpmbuild --define='file_user some_user' --define='file_group some_group'
这是不可能的。 %attr
在构建时固定;你特意要求 "during the rpm installation" 这行不通。
在您的 %post
中,您可以 chown
但这会破坏您的验证。
正如其他人指出的那样,这是不可能的。考虑到您要实现的目标,我会这样做:
%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。