首页 > 解决方案 > rpm.spec 中的 %attr 不采用环境变量的值

问题描述

我有一个 rpm.spec 文件,我必须在其中授予文件的文件权限。

我希望 %attr 在 rpm 安装期间采用 $user 和 $group 值。(我将在其中执行“export user =”和“export group =”)但它不采用这些值,而是在安装时给出语法错误转速。

我的规范文件中有类似的东西

%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

标签: rpmrpmbuildrpm-spec

解决方案


这是不可能的。%attr在构建时固定;您特别要求“在 rpm 安装期间”不起作用。

在你的%post你可以chown但是那会破坏你的验证。


推荐阅读