我有一个基于Python的SVN pre-commit脚本,它生成一个
1)在远程进行 SVN 提交时(通过 SSH 进行 SVN),
在执行上述#2步骤时,
rpmbuild
.spec
文件并通过 subprocess
运行 rpmbuild -bb my.spec
。目前的情况是:1)在远程进行 SVN 提交时(通过 SSH 进行 SVN),
rpmbuild
失败并显示...error: failed to create directory %{_topdir}: /rpmbuild: Permission denied
2) 当我在 SVN 服务器本地运行 rpmbuild -bb my.spec
命令时,它成功完成。
我有一个 ~/.rpmmacros
文件...
%_topdir /tmp/rpmbuild
在执行上述#2步骤时,
rpmbuild
将在/tmp/rpmbuild
下创建BUILD
、BUILDROOT
、RPMS
、SOURCES
、SPECS
和SRPMS
目录,并创建一个RPM文件放在RPMS
目录下。
从命令行运行rpm --showrc
,输出的目录与预期相同(这也是进程成功完成的原因)。
但是,通过pre-commit运行的过程中结果不同...
命令行...
-14: _topdir /tmp/rpmbuild
Pre-commit...
-14: _topdir %{getenv:HOME}/rpmbuild
我怀疑这就是问题所在,但是我不知道如何解决。 我还尝试过:
1) 在my.spec
中设置路径... %define _topdir /tmp/rpmbuild
结果显示权限被拒绝。
2) 在rpmbuild命令中设置路径... rpmbuild --define='_topdir /tmp/rpmbuild'
结果出现错误:error: Macro % has illegal name (%define)
。
非常感谢您提供的帮助,期待您的专业解决方案!
rpmbuild
吗?还是只是使用SPECS
目录来创建.spec
文件? - undefined%define _topdir
这一行?你知道错误是从规范文件的哪一行开始的吗?你能在 pre-commit 钩子中运行rpm --showrc
并查看它输出了什么吗?还有钩子中的env
命令? - undefined