当我使用时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
将正常工作。