rpmbuildがtclから呼び出されたときにtopdirがデフォルト値に設定されるのはなぜですか?

StackOverflow https://stackoverflow.com/questions/416983

  •  03-07-2019
  •  | 
  •  

質問

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

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

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

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

役に立ちましたか?

解決

デフォルトの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)があることを確認する必要があります

他のヒント

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

最初のチェックは、同じことを確実に実行することです。 コマンドラインでこれら2つを実行して、エイリアスまたはパスを確認します。 何も邪魔しないでください。

which rpmbuild

echo 'puts [auto_execok rpmbuild]' | tclsh

私の場合、これはrpmbuildが呼び出されたときに設定されない変数$ HOMEによるものです。
変数は '/ rpmmacros'ファイルの検索に使用されます。コマンド 'printenv'を使用して確認することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top