Rpm

如何從規範文件中確定建構 RPM 包的系統是否是 CentOS?

  • January 1, 2017

我有一個規範文件,其中的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

where(centos test)將替換為一些測試,以查看我們所在的發行版是否是 CentOS。我試過使用%{?rhel}%{?centos}作為這個測試。但兩者都失敗了。我也嘗試了測試%{rhel}%{centos}但都沒有成功(因為它似乎無法辨識這些宏)。我搜尋了 RPM 宏參考(如https://docs.fedoraproject.org/ro/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s07.htmlhttps://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/ html-single/RPM_Guide/index.html)但都沒有提到這些類型的宏。

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

請記住,如果您要檢查特定係列的發行版,則需要使用:

%if 0%{?rhel}

並不是

%if %{?rhel}

如果沒有額外的 0,如果 %{rhel} 未定義,則 %if 條件將不復存在,並且 rpm 將無法建構。

同樣,您需要在第一個條件下使用 0%{?fedora} 。

引用自:https://unix.stackexchange.com/questions/333932