web-dev-qa-db-ja.com

SPEC%files属性とシェル変数

シェルにエクスポートされた場所にデプロイされているライブラリを解凍するスペックファイルがあります。

すなわち

%file
${AXIS2_C}/bin/services/services.xml

これは次のように失敗します:

error: File not found: root/rpmbuild/BUILDROOT/i386/${AXIS2_C}/bin/services/services.xml

つまり、Shell変数は展開されません。これを回避する方法はありますか?

ありがとう!

4
Ricko M

残念ながら、%prep、%build、または%installセクションによって開始されたシェルで定義されたものは、ビルド環境に保存されません。 %{AXIS2_C}、[〜#〜] macro [〜#〜]変数(シェル変数ではない)を定義する必要があります。

%define AXIS2_C /usr/local/something

そして、両方のシェルでそれを次のように参照します

make whatever FOO=%{AXIS2_C} # or however you used the env variable

次に、%filesセクションで、

%file
%{AXIS2_C}/bin/services/services.xml

通常、最初の%defineはスペックファイルの先頭にあり、その目的に関するドキュメントがいくつかあります。マクロを動的に設定する必要がある場合は、%()などのより複雑なRPM仕様のマクロコマンドを使用してシェル拡張を行う必要があります。

7
jsbillings

{ }で囲んでおらず、" "のみを使用するとどうなりますか

%file
"$AXIS2_C"/bin/services/services.xml

(または" "がまったくない場合でも)

0
wag