Rpm
如何從規範文件中確定建構 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
where
(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)但都沒有提到這些類型的宏。
引用https://fedoraproject.org/wiki/Packaging:DistTag#Conditionals:
請記住,如果您要檢查特定係列的發行版,則需要使用:
%if 0%{?rhel}
並不是
%if %{?rhel}
如果沒有額外的 0,如果 %{rhel} 未定義,則 %if 條件將不復存在,並且 rpm 將無法建構。
同樣,您需要在第一個條件下使用 0%{?fedora} 。