23.3. RPM の主な機能および変更


Red Hat Enterprise Linux 9 には RPM バージョン 4.16 が同梱されています。このバージョンでは、以前のバージョンに加えて、多くの機能拡張が導入されました。

主な変更には以下のものがあります。

  • 以下の主要機能を含む新しい SPEC の機能

    • 高速なマクロベースの依存関係ジェネレータ

      依存関係ジェネレーターを通常の RPM マクロとして定義できるようになりました。これは、組み込みの Lua インタープリター (%{lua:…​}) と組み合わせて使用​​すると特に便利です。これにより、洗練された高速なジェネレーターを作成し、冗長なフォークを回避してシェルスクリプトを実行できます。

      以下に例を示します。

      %__foo_provides()    %{basename:%{1}}
      Copy to Clipboard
    • 動的ビルド依存関係の生成を可能にする%generate_buildrequires セクション

      追加のビルド依存関係は、RPM のビルド時に、新しく利用可能になった %generate_buildrequires を使用してプログラムで生成できるようになりました。これは、特殊なユーティリティーが、Rust、Golang、Node.js、Ruby、Python、Haskell などのランタイム依存関係またはビルド時依存関係を判断するために、一般的に使用される言語で記述されたソフトウェアをパッケージ化する場合に役立ちます。

    • メタ (順不同) な依存関係

      meta と呼ばれる新しい依存関係修飾子により、特にインストール時依存関係またはランタイム依存関係ではない依存関係を表現できます。これは、メタパッケージの依存関係を指定する場合など、通常の依存関係の順序付けにより発生する可能性のある不要な依存関係ループを回避するのに役立ちます。

      以下に例を示します。

      Requires(meta): <pkgname>
      Copy to Clipboard
    • 式でのネイティブなバージョン比較

      新しく対応した v"…​" 形式を使用することで、式内の任意のバージョン文字列を比較できるようになりました。

      以下に例を示します。

      %if v"%{python_version}" < v"3.9"
      Copy to Clipboard
    • チルダとは異なるカレットバージョンの演算子

      新しいキャレット (^) 演算子を使用すると、ベースバージョンよりも高いバージョンを表すことができます。これは、逆の意味を持つ既存のチルダ (~) 演算子を補完するものです。

    • %elif%elifos、および %elifarch ステートメント
    • オプションの自動パッチとソースのナンバリング

      番号のない Patch: タグおよび Source: タグは、リスト表示されている順序に基づいて自動的に番号が付けられるようになりました。

    • %autopatch がパッチの範囲を受け入れる

      %autopatch マクロで、適用する最小パッチ番号と最大パッチ番号をそれぞれ制限する -m パラメーターと -M パラメーターが使用できるようになりました。

    • %patchlist および %sourcelist セクション

      新しく追加した %patchlist セクションおよび %sourcelist セクションを使用して、各項目の前に各 Patch: タグおよび Source: タグを付けずに、パッチファイルおよびソースファイルのリストを表示できるようになりました。

    • より直感的なビルド条件の宣言方法

      RHEL 9.2 以降では、新しい %bcond マクロをビルド条件に使用できます。%bcond マクロは、ビルド条件名とデフォルト値を引数として受け取ります。古い %bcond_with および %bcond_without マクロと比較して、%bcond は理解しやすく、ビルド時にデフォルト値を計算できます。デフォルト値には任意の数値式を指定できます。

      以下に例を示します。

      • gnutls ビルド条件 (デフォルトで有効) を作成するには、次のように指定します。

        %bcond gnutls 1
        Copy to Clipboard
      • bootstrap ビルド条件 (デフォルトで無効) を作成するには、次のように指定します。

        %bcond bootstrap 0
        Copy to Clipboard
      • openssl ビルド条件 (デフォルトで gnutls の反対) を作成するには、次のように指定します。

        %bcond openssl %{without gnutls}
        Copy to Clipboard
    • %patch N がパッチ番号 0 を適用しなくなる

      以前は、%patch N 構文( N はパッチ数)を使用すると、構文は N で指定されたパッチに加えて、パッチ番号 0 (Patch0)も適用していました。

      RHEL 9.6 では、%patch N 構文が修正され、パッチ番号 N のみが適用されるようになりました。

      重要

      パッチ番号を指定せずに %patch ディレクティブを使用すると、%patch 0 の省略形として Patch0 が適用されます。ただし、明示的な構文(例: %patch 0 または %patch -P 0 )を使用して、ゼロパッチ を適用するという警告が表示されます。

  • RPM データベースは現在 sqlite ライブラリーをベースとするようになりました。BerkeleyDB データベースに対する読み取り専用のサポートは、移行および照会の目的で保持されています。
  • トランザクションに関する監査ログイベントを発行するための新しい rpm-plugin-audit プラグイン (以前は RPM 自体に組み込まれていた)
  • パッケージビルドの並列性向上

    パッケージビルドプロセスの並列化には改善が数多く行われています。この改善には、さまざまな buildroot ポリシースクリプトと、サニティーチェック、ファイル分類、サブパッケージの作成と順序付けが含まれます。その結果、パッケージは、特に大規模なパッケージ向けに、マルチプロセッサーシステムをベースに構築されるようになり、高速化と効率化が図られるようになりました。

  • ビルド時のヘッダーデータの UTF-8 検証の強制
  • RPM は、Zstandard (zstd) 圧縮アルゴリズムをサポートするようになりました

    RHEL 9 では、デフォルトの RPM 圧縮アルゴリズムが Zstandard (zstd) に切り替わりました。その結果、パッケージのインストール時間が短縮されました。特に大規模なトランザクションなどで顕著になる可能性が高いです。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat