SPEC %files 属性とシェル変数

SPEC %files 属性とシェル変数

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

つまり

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

失敗します。

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

つまり、シェル変数は拡張されません。この問題を解決する方法はありますか?

ありがとうございます!

答え1

残念ながら、%prep、%build、または%installによって部分的に開始されたシェルで定義されているすべてのエントリは、ビルド環境では維持されません。 %{AXIS2_C} を定義する必要があります。マクロ変数(シェル変数ではありません):

%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仕様マクロコマンドを使用する必要があります。

答え2

カプセル化せずにただ使用すると{ }どうなりますか?" "

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

(あるいは" "まったくない)

関連情報