web-dev-qa-db-ja.com

RPMスペックファイル-スペックファイル変数を動的に入力することは可能ですか

スペックファイルがあります。システム上の1行のファイルから値を取得するスペック変数を%defineする必要があります。

例えば

%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)の行である場合があります?

30
last_shogun

スペックファイルの先頭にある%(cmd)を使用して、rpmbuild変数を定義できます。コマンドが中括弧ではなく括弧内にあることに注意してください。例:

%define whoami %(whoami)

そして、スクリプトやビルド/インストールセクションなどのスペックファイルの他の場所では、次のように中かっこ内で通常どおり変数を使用します。

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

cmdは、catコマンドを含め、何でもかまいません。注意してください-別のユーザーがスペックファイルを再構築すると、ファイルが見つからない場合があります。したがって、次のように%{sourcedir}マクロを使用することをお勧めします。

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

そして、path_fileはソースディレクトリにあり、スペックファイルにソースとして含まれています。

42
Corey Henderson