3.4. spec ファイルでのカスタム RPM マクロの定義


パッケージのメンテナンスを簡素化し、パッケージ間で一貫性を保つために、組み込みの RPM マクロや配布用 RPM マクロに加えて、カスタム RPM マクロを定義します。RPM の spec ファイルでは、%define マクロと %global マクロのいずれかを使用できます。

%define マクロと %global マクロの違いは次のとおりです。

  • %define はグローバルスコープを持ちます。ただし、パラメトリックマクロ内で使用される場合、そのスコープはそのマクロ内に限定されます。%define マクロの本体は使用時に展開されます。
  • %global はグローバルスコープを持ちます。%global マクロの本体は定義時に展開されます。
重要

次の操作を行う場合は、%global マクロを使用してください。

  • 重複した複数の評価を避ける
  • パラメトリックマクロ内でグローバルマクロを定義する

それ以外の場合は、%define マクロを使用してください。

%define および %global マクロは、%global <name> <body> または %define <name>[(opts)] <body> というパターンを使用します。

  • <body> を囲む前後のすべての空白は、マクロの展開時に削除されます。
  • マクロ名は、英数字とアンダースコア (_) 文字で構成されている場合があります。
  • (opts) フィールドの指定は任意です。

    • 単純なマクロには (opts) フィールドは含まれません。この場合、再帰的なマクロ展開のみが実行されます。
    • パラメトリックオプションを指定したマクロは、引数や使用可能なオプションを受け取る関数のようなマクロです。詳細は、/usr/share/doc/rpm/macros.md ファイルを参照してください。
重要

マクロは、ハッシュ (#) を使用してコメント化された行や、%changelog などの spec ファイルのセクション内でも、spec ファイル内のすべての場所で評価および展開されます。

マクロの展開をエスケープするには、次の新しい行までの内容をすべてコメントアウトする %dnl マクロを使用できます。

マクロの前にパーセント記号 (%) をもう 1 つ配置することで、マクロの展開をエスケープすることもできます (例: %%{name})。

マクロの詳細は、/usr/share/doc/rpm/macros.md ファイルを参照してください。

手順

  • マクロを定義します。たとえば、RPM spec ファイルに次の行を含めることができます。

    %define date 20241114
    %define upstream_version 2.5.4-pre1
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る