首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >rpm.spec中的%attr不接受环境变量的值

rpm.spec中的%attr不接受环境变量的值
EN

Stack Overflow用户
提问于 2019-05-21 15:29:11
回答 2查看 742关注 0票数 0

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

我希望%attr在rpm安装期间获取$user和$group的值(我将在其中执行“导出user=”和“导出group="),但它不获取这些值,而是在安装rpm时给出一个语法错误。

在我的specfile中有类似这样的东西

代码语言:javascript
复制
%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时-

代码语言:javascript
复制
warning: user $user does not exist - using root
warning: group $group does not exist - using root

我甚至尝试给%attr(0700,%{getenv:user},%{getenv:group}),但在准备rpm时失败

代码语言:javascript
复制
RPM build errors:
Bad syntax: %attr(0700)
make: *** [all] Error 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-22 06:16:08

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

在你的%post中,你可以使用chown,但是这会破坏你的验证。

票数 1
EN

Stack Overflow用户

发布于 2019-05-22 17:56:26

正如其他人指出的那样,这种方式是不可能的。考虑到您正在尝试实现的目标,我会这样做:

代码语言:javascript
复制
%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中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56233258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档