我有一个'exec'rpmbuild的tcl脚本.这样做时,rpmbuild使用的'topdir'是错误的.我的主目录中有一个.rpmmacros文件,如果我手动调用rpmbuild,它工作正常,即.'topdir'不是默认值.
我在tcl脚本中添加了[exec rpmbuild"--showrc"]以检查topdir的值,它显示'-14:_topdir%{_ usrsrc}/redhat'这是默认值.
有人能解释我为什么会出现这种情况以及如何解决这个问题?
我宁愿不用--define指定它,因为它实际上是在makefile中完成的,我不想触摸它(如果没有其他选择,我会这样做).
Zac*_*ner 91
有两种方法可以更改默认的rpmbuild topdir:
每用户:通过在$ HOME/.rpmmacros中配置RPM topdir
%_topdir %{getenv:HOME}/rpmbuild
Run Code Online (Sandbox Code Playgroud)每个项目:通过在Makefile或命令行中配置RPM topdir
rpmbuild --define '_topdir build' -ba package.spec
Run Code Online (Sandbox Code Playgroud)注意:在这两种情况下,您都需要确保topdir目录具有相应的目录(BUILD,SRPM,RPM,SPECS和SOURCES)
小智 10
在RHEL6中:
rpm --showrc|grep topdir
rpm --showrc|grep srcrpmdir
Run Code Online (Sandbox Code Playgroud)
要查看正在使用的路径是什么!
进行此更改(我的topdir未设置为/usr/src/):
vi /usr/lib/rpm/macros
# Path to top of build area.
#%_topdir %{getenv:HOME}/rpmbuild
%_topdir %{_usrsrc}/redhat
rpm --showrc|grep topdir now shows /usr/src/redhat/ as its BUILD dir
Run Code Online (Sandbox Code Playgroud)