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

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

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

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

有帮助吗?

解决方案

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

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

    %_topdir    %{getenv:HOME}/rpmbuild
    
  2. Per-Project:通过在Makefile或命令行中配置RPM topdir

    rpmbuild --define '_topdir build' -ba package.spec
    
  3. 注意:在这两种情况下,您都需要确保topdir目录具有相应的目录(BUILD,SRPM,RPM,SPECS和SOURCES)

其他提示

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

默认情况下,TCL将在当前目录中执行。您可以使用TCL命令更改当前目录 http:// www .tcl.tk / man / tcl8.4 / TclCmd / cd.htm cd,例如:

cd ~username

如果topdir是环境变量,您可以设置它 http://www.tcl.tk/man/tcl8.4/TclCmd/tclvars.htm#M4 是这样的:

set env(topdir) whatever/you/want

我的第一个检查是确保你执行同样的事情。 在命令行上执行这两项操作以确保别名或路径 不要打扰任何事情。

which rpmbuild

echo 'puts [auto_execok rpmbuild]' | tclsh

在我的情况下,这是由于调用rpmbuild时未设置的变量$ HOME。
该变量用于搜索'/ rpmmacros'文件。我建议使用命令'printenv'来验证。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top