rpm.spec中的%attr不接受env变量的值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (85)

我有一个rpm.spec文件,我必须为其提供文件的文件权限。

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

我的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
提问于
用户回答回答于

这是不可能的。%attr在建立时固定; 你特意要求“在rpm安装期间”这是行不通的。

在你的%post就可以chown,但那么这将打破您的验证。

用户回答回答于

您可以在调用时在命令行上定义宏rpmbuild

在spec文件中:

%attr(0700,%{file_user},%{file_group}) /path/to/file

rpmbuild像这样调用:

rpmbuild --define='file_user some_user' --define='file_group some_group'

扫码关注云+社区

领取腾讯云代金券