我有一个基于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
时,会创建BUILD
,BUILDROOT
,RPMS
,SOURCES
,SPECS
和{{ 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'
。
您对解决此问题的专业知识表示赞赏;非常感谢!
答案 0 :(得分:0)
该错误意味着在预提交运行时未设置$HOME
(因此未使用.rpmmacros
文件且${getenv:HOME}
正在评估空字符串。)
我不知道为什么会这样(也许是svn的变化),但这似乎是个问题。
答案 1 :(得分:0)
缺少的部分是文件......
/etc/rpm/macros
我创建了/etc/rpm
,文件macros
填充了我需要的%_topdir...
。执行此操作后_topdir
rpmbuild
可用rpmbuild
,我的流程成功完成。这是通过strace
到{{1}}运行来发现的。