RPM构建 - 拒绝权限

时间:2014-11-14 19:10:30

标签: rpm permission-denied rpmbuild rpm-spec

我有一个基于Python的SVN预提交脚本,可生成rpmbuild .spec文件并通过rpmbuild -bb my.spec运行subprocess。目前的状态是:

1)远程执行SVN提交(通过SSH进行SVN)时,rpmbuild失败并显示...

error: failed to create directory %{_topdir}: /rpmbuild: Permission denied

2)当我rpmbuild -bb my.spec(SVN服务器上的本地)时,它成功完成

我有~/.rpmmacros ...

%_topdir /tmp/rpmbuild

执行#2(上述)rpmbuild时,会创建BUILDBUILDROOTRPMSSOURCESSPECS和{{ 1 {}在SRPMS下,并在/tmp/rpmbuild中创建了一个RPM。

从命令行开始,如果我RPMS dirs是我期望的(并且应该是这个过程成功完成的原因)。

但是我通过预提交运行的过程有不同的结果......

命令行...... rpm --showrc

预提交... -14: _topdir /tmp/rpmbuild

我怀疑这是问题,我不知道如何纠正这个问题。我也尝试过:

1)在-14: _topdir %{getenv:HOME}/rpmbuild ... my.spec中设置路径,该路径提供相同的权限拒绝错误。

2)在rpmbuild命令中设置路径... %define _topdir /tmp/rpmbuild导致rpmbuild --define='_topdir /tmp/rpmbuild'

您对解决此问题的专业知识表示赞赏;非常感谢!

2 个答案:

答案 0 :(得分:0)

该错误意味着在预提交运行时未设置$HOME(因此未使用.rpmmacros文件且${getenv:HOME}正在评估空字符串。)

我不知道为什么会这样(也许是svn的变化),但这似乎是个问题。

答案 1 :(得分:0)

缺少的部分是文件......

/etc/rpm/macros

我创建了/etc/rpm,文件macros填充了我需要的%_topdir...。执行此操作后_topdir rpmbuild可用rpmbuild,我的流程成功完成。这是通过strace到{{1}}运行来发现的。