web-dev-qa-db-ja.com

RPMパッケージが構築されているシステムがCentOSであるかどうかをスペックファイル内から判断するにはどうすればよいですか?

Requires:フィールドが構築されている特定のディストリビューションに依存するスペックファイルがあります。したがって、次の行に沿って条件付き構造を作成できる必要があります。

%if %{?fedora}
Requires:       xterm libssh clang
BuildRequires:  wxGTK3-devel  cmake clang-devel lldb-devel libssh-devel hunspell-devel sqlite-devel desktop-file-utils
%endif
%if (centos test)
Requires:       xterm libssh clang
BuildRequires:  wxGTK3-devel cmake clang-devel lldb-devel libssh-devel hunspell-devel
%endif

ここで、(centos test)は、現在使用しているディストリビューションがCentOSであるかどうかを確認するためのテストに置き換えられます。このテストとして%{?rhel}%{?centos}を使用してみました。しかし、両方とも失敗しました。 %{rhel}%{centos}のテストも試しましたが、どちらも機能しませんでした(これらのマクロを認識していないようでした)。 RPMマクロ参照を検索しました( https://docs.fedoraproject.org/ro/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s07.html および https://docs.fedoraproject .org/en-US/Fedora_Draft_Documentation/0.1/html-single/RPM_Guide/index.html )ただし、どちらもこれらのタイプのマクロについては言及していません。

1
BH2017

https://fedoraproject.org/wiki/Packaging:DistTag#Conditionals からの引用:

特定のディストリビューションファミリをチェックする場合は、次のものを使用する必要があることに注意してください。

%if 0%{?rhel}

ではなく

%if %{?rhel}

余分な0がないと、%{rhel}が定義されていない場合、%if条件が存在しなくなり、rpmの構築に失敗します。

同様に、最初の条件で0%{?fedora}を使用する必要があります。

0
msuchy