rpmbuildがtclから呼び出されたときにtopdirがデフォルト値に設定されるのはなぜですか?
質問
rpmbuildを「実行」するtclスクリプトがあります。その場合、rpmbuildで使用される「topdir」が間違っています。ホームディレクトリに.rpmmacrosファイルがあり、手動でrpmbuildを呼び出すと、正常に機能します。 「topdir」はデフォルトではありません。
[exec rpmbuild"-showrc"を追加しました。 ] をtclスクリプトで topdir の値を確認し、デフォルト値である「-14:_topdir%{_ usrsrc} / redhat」と表示します。
誰かがその状況の理由と解決方法を説明できますか?
実際にはメイクファイルで行われ、触れたくないので、--defineで指定する必要はありません(他に選択肢がない場合は行います)。
解決
デフォルトのrpmbuild topdirを変更するには、2つの方法があります:
-
ユーザーごと:$ HOME / .rpmmacrosでRPM topdirを構成することにより
%_topdir %{getenv:HOME}/rpmbuild
-
プロジェクトごと: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'を使用して確認することをお勧めします。