次の特定の条件でのみファイルを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
正式な構文の詳細を学ぶことができます。ここ。