当前位置:  开发笔记 > 编程语言 > 正文

当rpmbuild从tcl调用时,为什么topdir设置为默认值?

如何解决《当rpmbuild从tcl调用时,为什么topdir设置为默认值?》经验,为你挑选了2个好方法。

我有一个'exec'rpmbuild的tcl脚本.这样做时,rpmbuild使用的'topdir'是错误的.我的主目录中有一个.rpmmacros文件,如果我手动调用rpmbuild,它工作正常,即.'topdir'不是默认值.

我在tcl脚本中添加了[exec rpmbuild"--showrc"]以检查topdir的值,它显示'-14:_topdir%{_ usrsrc}/redhat'这是默认值.

有人能解释我为什么会出现这种情况以及如何解决这个问题?

我宁愿不用--define指定它,因为它实际上是在makefile中完成的,我不想触摸它(如果没有其他选择,我会这样做).



1> Zach Garner..:

有两种方法可以更改默认的rpmbuild topdir:

    每用户:通过在$ HOME/.rpmmacros中配置RPM topdir

    %_topdir    %{getenv:HOME}/rpmbuild
    

    每个项目:通过在Makefile或命令行中配置RPM topdir

    rpmbuild --define '_topdir build' -ba package.spec
    

注意:在这两种情况下,您都需要确保topdir目录具有相应的目录(BUILD,SRPM,RPM,SPECS和SOURCES)


真棒."--define'_topdir xxxxx'"是rpm知识中最缺乏记录的部分.我一直在寻找这个.
只是放置'$ HOME`不起作用 - 你应该使用'%{getenv:HOME}`

2> 小智..:

RHEL6中:

  rpm --showrc|grep topdir
  rpm --showrc|grep srcrpmdir

要查看正在使用的路径是什么!

进行此更改(我的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

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有