6.2. spec ファイルの条件分岐


仕様 ファイルの条件式を使用することで、仕様 ファイルのさまざまなセクションを条件付きで含めることを可能にします。

通常、条件分岐は次の側面を扱います。

  • アーキテクチャー固有のセクション
  • オペレーティングシステム固有のセクション
  • さまざまなバージョンのオペレーティングシステム間の互換性に関する問題

spec の条件分岐はさまざまな目的で使用できます。次に例を示します。

  • 条件式 (%if)。%if は複数の目的で使用できます。たとえば、次のような構文で使用できます。

    • “式が真であれば、ある操作を実行する”:

      %if expression
      ...
      %endif
    • “式が真であればある操作を実行し、そうでない場合は別の操作を実行する”:

      %if expression
      ...
      %elsif expression
      ...
      %else
      ...
      %endif
    • %if の後には、任意の数の %elif 条件分岐 (ネストされた %elsif) を指定することもできます。次に例を示します。

      %if expression
      %elif expression
      ...
      %else
      %endif
  • システムアーキテクチャー (%ifarch%ifnarch)。%ifarch は、現在のターゲットシステムのアーキテクチャーが一致するかどうかをテストします。%ifarch を使用すると、複数のプラットフォーム用の RPM パッケージをビルドできます。次に例を示します。

    %ifarch s390 s390x
    BuildRequires: s390utils-devel
    %endif
  • オペレーティングシステム (%ifos%ifnos)。%ifos は、ビルド対象のオペレーティングシステムに応じて spec ファイルの処理を制御します。

6.2.1. %if 条件分岐の使用例

仕様 ファイル内で %if 条件式を使用する方法を示す以下の例を確認してください。

例6.1 %if 条件分岐を使用して Red Hat Enterprise Linux 10 と他のオペレーティングシステム間の互換性を処理する

%if 0%{?rhel} == 10
sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' configure.in
sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' acinclude.m4
%endif

RHEL 10 でパッケージをビルドする際、この条件分岐により、%rhel マクロの値が 10 に設定されている場合に、対象となる autoconf スクリプトから AS_FUNCTION_DESCRIBE 行がコメントアウトされます。

例6.2 %if 条件分岐を使用してマクロの定義を処理する

%define ruby_archive %{name}-%{ruby_version}
%if 0%{?milestone:1}%{?revision:1} != 0
%define ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}}
%endif

この条件分岐はマクロの定義を処理します。%milestone または %revision マクロが設定されている場合、アップストリームのアーカイブの名前を定義する %ruby_archive マクロが再定義されます。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る