2012-04-19 18 views
29

仕様ファイルがあります。私は、システム上の1行のファイルからその値を取得するspec変数を定義する必要があります。例RPM仕様ファイル - 仕様ファイル変数を動的に取り込むことは可能ですか

%define path `cat /home/user/path_file` 

の場合とpath_fileで

は1行これは部分的に動作します

/var/www/html/hosts 

です。私はRPM BUILDの出力で始まると言うことがありますが、${path}の値は文字通り私のコマンドcat /home/user/path_fileです。値はpath_file(/ var/www/html/hosts)の行になることがあります。

答えて

39

specbuildファイルの先頭に%(cmd)という変数を定義できます。コマンドが中かっこではなく、かっこ内にあることに注意してください。例:なスクリプトとしてspecファイル、またはビルド/セクションをインストール中

%define whoami %(whoami) 

そして他の場所で、このような中括弧で通常通りの変数を使用します。

echo "The user that built this is %{whoami}" 

cmd缶あなたのcatコマンドを含む何かになります。注意してください - 別のユーザーがspecファイルを再構築するとき、ファイルを見つけることができません。

%define path %(cat %{sourcedir}/path_file) 

そしてpath_fileは、ソースディレクトリ内にあり、スペックファイルのソースとして含まれていることを確認します:だから、このような%{SOURCEDIR}マクロを使用するのが好ましいでしょう。

+1

Corey Thanks Corey !!!私はWEEEKSのためにこれに対する答えを探しています!再度ありがとうございました –

+0

Corey - rpmを実行するために/ home/user/path_fileを "必須"にしたいのですか?スペックファイルのPreReqまたはRequiredパラメータにすることはできますか?私が必要としてみると、そのファイルはそこにはなく、それは完全にそこにあると言いますか? –

+0

システムにインストールされているファイルに依存するPreReqなどのオプションは、実際にrpmデータベース内でファイルを所有するパッケージの存在を調べます。ファイルシステムの有無をチェックしません。 –

関連する問題