28

rpmbuild を「実行」する tcl スクリプトがあります。その際、rpmbuild が使用する「topdir」が間違っています。ホーム ディレクトリに .rpmmacros ファイルがあり、手動で rpmbuild を呼び出すと、正常に動作します。「topdir」はデフォルトのものではありません。

[exec rpmbuild "--showrc" ]を Tcl スクリプトに追加して、 topdirの値を確認すると、デフォルト値である「-14: _topdir %{_usrsrc}/redhat」と表示されます。

誰かがその状況とそれを解決する方法を説明できますか?

--define で指定する必要はありません。これは、実際にはメイクファイルで行われ、触れたくないためです (他に選択肢がない場合は、そうします)。

4

5 に答える 5

96

デフォルトの rpmbuild topdir を変更するには、次の 2 つの方法があります。

  1. ユーザーごと: $HOME/.rpmmacros で RPM topdir を構成することにより

    %_topdir    %{getenv:HOME}/rpmbuild
    
  2. プロジェクトごと: Makefile またはコマンド ラインで RPM の topdir を構成する

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

注: どちらの場合も、topdir ディレクトリに適切なディレクトリ (BUILD、SRPM、RPM、SPECS、および SOURCES) があることを確認する必要があります。

于 2010-06-21T00:34:53.573 に答える
10

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
于 2011-12-29T17:00:18.010 に答える
1

デフォルトでは、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
于 2009-01-06T18:09:44.610 に答える