rpmbuild 不使用当前工作目录,而是使用用户主目录?

rpmbuild 不使用当前工作目录,而是使用用户主目录?

当我使用时rpmbuild我得到,没有这样的文件或目录

# rpmbuild -ba ./SPECS/myFoo.spec
error: File /root/rpmbuild/SOURCES/myFoo.tar.gz: No such file or directory

rpmbuild尽管从完全不同的用户主目录运行命令,但它似乎正在从我的主目录读取。但是,如果我使用--root(记录为“使用以 为根的文件系统树DIRECTORY进行所有操作。”

# rpmbuild -ba ./SPECS/myFoo.spec --root /home/centos/myFoo/
error: File /root/rpmbuild/SOURCES/myFoo.tar.gz: No such file or directory

有什么解决方案可以让它看起来在正确的位置。

答案1

执行此操作的一种方法是

rpmbuild --define "_topdir `pwd`" -ba ./SPECS/myFoo.spec

不知道这是否是正确的方法。

答案2

rpmbuild除了查找作为参数提供给它的文件外,并不特别关心当前目录。其他一切都基于_topdir宏的值。rpmbuild也确实希望您使用单个目录结构来完成所有构建。

rpmbuild您可以通过在中存储适当的值来为任何特定用户永久定义 的目录结构的根~/.rpmmacros

%_topdir /path/to/your/data

或者,正如您所确定的,_topdir每次运行rpmbuild-D选项时都会覆盖该选项。

答案3

我有同样的问题,我已经使用了以下解决方案。

打开文件~/.rpmmacros

并更改行:

%_topdir %(echo $HOME)/rpmbuild

为了:

%_topdir %(pwd)

现在:

rpmbuild -ba ./SPECS/myFoo.spec

将正常工作。

相关内容