%installおよび%fileマクロの条件をRPM仕様ファイルにどのように入れますか?

%installおよび%fileマクロの条件をRPM仕様ファイルにどのように入れますか?

次の特定の条件でのみファイルをRPM仕様ファイルにコピーしたいと思います。

%install 
if [ %{test}=="true" ]; 
then
    cp %{topdirectory}/file1.txt $RPM_BUILD_ROOT/home/user1
fi

%files
if [ %{test}=="true" ]; 
then
   %attr(0644, user1,user1) /home/user1/file1.txt
fi

rpmbuildを実行するときに「テスト」が何であるかを定義するフラグを渡します。たとえば、次のようになります。

rpmbuild --define="test true" --bb --quiet myspecfile.spec

ただし、次のエラー メッセージが表示されます。

error: File must begin with "/": if
error: File must begin with "/": [
error: File must begin with "/": false=="true"
error: File must begin with "/": ]; 
error: File must begin with "/": then
error: File must begin with "/": fi

このエラーメッセージが何を意味するのかわかりませんが、%filesマクロまたは%installマクロの近くにifステートメントを配置するのが好きではないようです。 rpmbuildを幸せにするためにif文をどのように変更しますか?

答え1

Specには独自の条件構文があるため、次の構文を使用する必要があります。

%if %{test} == "true"
%attr(0644, user1,user1) /home/user1/file1.txt
%endif

正式な構文の詳細を学ぶことができます。ここ

関連情報