22.3.2. 改善されたパッケージ体験


RHEL 9 と RHEL 10 の間で、パッケージングエクスペリエンスがどのように改善されたかを確認してください。

動的 spec 生成のサポート
spec 部分を含むファイルを事前定義された場所に配置することで、ビルドプロセス中にサブパッケージを追加できるようになりました。詳細は、動的仕様生成 を参照してください。
rpmspec コマンドラインツールの新しい --shell オプション
このオプションは、spec ファイルのコンテキスト内外のいずれかで RPM マクロの開発とテストに使用できる対話型 RPM マクロインタープリターを実行します。詳細は、システムの rpmspec(8) man ページを参照してください。
%autopatch での個別パッチ適用のサポート
特定のパッチ番号を位置引数としてリストできるようになりました。たとえば、%autopatch 1 4 6 の場合は、パッチ番号 1、4、6 が適用されます。
%files セクションでの適切なシェルのようなグロブとエスケープ
ファイル名内のワイルドカードパターンやエスケープ文字 (バックスラッシュや引用符など) は、Bash などのシェルインタープリターの動作を反映した、より一般的な方法で解釈されるようになりました。以前は、これらのルールに対する文書化されていない制限と例外によって予期しない結果が生じ、spec ファイルの %files セクションでより複雑なパターンが使用できなくなる可能性がありました。
分析され展開された spec ファイルのコンテンツを含むソース RPM パッケージの新しいタグ
パッケージングの問題の分析を支援するために、ソース RPM パッケージに新しい RPMTAG_SPEC タグが追加されました。このタグには、ビルド中に使用される形式で拡張された spec ファイルの内容が含まれます。このタグは、rpm --qf ‘%{spec}’ -q /path/to/my/src.rpm コマンドを実行すると表示できます。
ビルドの並列処理でシステムリソースが考慮されるようになる

RPM は、パッケージのビルド時に使用する並列プロセスとスレッドの数を見積もる際に、利用可能な物理メモリーとアドレス空間を考慮するようになりました。これは、CPU の数が多いがメモリーの量が限られているシステムなど、リソースが制限されたシステムでのパフォーマンスの問題やビルドの失敗を防ぐのに役立ちます。

これらの見積もりは、ビルド時に 1 つのプロセスまたはスレッドが必要とすると想定されるメモリー量を指定することで調整できます。それぞれ、%_smp_tasksize_proc マクロと %_smp_tasksize_thread マクロを定義して設定します。どちらのマクロもデフォルト値は 512 MB です。たとえば、システムにパフォーマンスの問題がある場合は、RPM のこれらの値を増やして、ビルドに割り当てる CPU の数を減らすことができます。同様に、システムが十分に活用されていない場合は、RPM のこれらの値を減らして、より多くの CPU を割り当てることができます。

詳細は、Macros for controlling build parallelism を参照してください。

zstd によるペイロード圧縮がマルチスレッドをサポートするようになる
zstdio 圧縮メソッドは、ビルド中にペイロードを圧縮する際に使用するスレッドの数を指定するオプションの T パラメーターを受け入れるようになりました。これにより、大規模なパッケージのビルド時間を短縮できます。この機能を有効にするには、%_binary_payload および %_source_payload マクロを適宜設定します。詳細は、/usr/lib/rpm/macros ファイル内の関連するコメントブロックと 期待される形式の表 を参照してください。
新しいオプションの %conf spec ファイルセクション
このセクションを使用すると、spec ファイルの %prep または %build セクションで設定する代わりに、ビルド用に展開されたソースを設定できます。
Lua ネイティブマクロ統合

組み込み Lua インタープリターが更新され、次の機能拡張が追加されました。

  • Lua テーブルを通じたオプションと引数への簡単なアクセス

    以前は、パラメトリクス Lua マクロのオプションと引数にアクセスするには、rpm.expand() 関数を使用する必要がありました。この機能拡張により、これらのマクロはオプションと引数をそれぞれ opt および arg ローカルテーブルとして受け取ります。

  • マクロへのアクセスの簡素化

    マクロは、グローバル Lua 環境の macros テーブルを通じてアクセスできるようになりました。このテーブルは、すべての組み込みマクロを含むパラメトリクスマクロを呼び出すためにも使用できます。

  • RPM バージョンオブジェクトと I/O ストリームの新しいバインディング

    新しい rpm.ver() 関数を使用して、RPM バージョン文字列からオブジェクトを作成できるようになりました。これらのオブジェクトを使用して、次のアクションを実行できます。

    • 事前に解析された個々の EVR コンポーネントをそれぞれ evr フィールドを通じて取得します。
    • RPM バージョン文字列を相互に比較します。

    また、新しい rpm.open() 関数を使用して、透過的な圧縮や展開などの RPM の I/O 機能を使用するファイルストリームを開くこともできます。

詳細は、Lua in RPM を参照してください。

Lua に実装された便利な文字列操作用の新しいマクロ
シェルのサブプロセスを実行しなくても、RPM マクロを使用して、部分文字列の抽出や長さの取得などの基本的な文字列操作を直接実行できるようになりました。詳細は、String operations を参照してください。
組み込みマクロとユーザー定義マクロの統一された呼び出し規則
マクロの呼び出しに使用される %foo arg%{foo arg}、および %{foo:arg} 表記が同等に扱われるようになりました。ただし、小さな例外や違いが存在する可能性があることに注意してください。
複数の新しい組み込みマクロ

複数の新しい組み込みマクロが利用できるようになりました。特に注目すべきものは次のとおりです。

  • %{rpmversion}: システムにインストールされている RPM のバージョンを取得する
  • %{exists:…​}: ファイルの存在をテストする
  • %{shescape:…​}: 単一の引数を期待するシェルコマンドで使用するために、文字列を一重引用符 ('') で囲みます。
新しい %preuntrans および %postuntrans スクリプトレット

%preuntrans および %postuntrans アンインストール時スクリプトレットは、既存のインストール時 %pretrans および %posttrans スクリプトレットを補完します。

  • %preuntrans スクリプトレットは、このトランザクションによって削除されるパッケージのトランザクションの前に実行されます。
  • %postuntrans スクリプトレットは、このトランザクションによって削除されたパッケージのトランザクション後に実行されます。
Sequoia PGP によるパッケージの署名のサポートがテクノロジープレビューとして利用可能になる

パッケージの署名に GnuPG ではなく Sequoia PGP を使用するように RPM を設定する macros.rpmsign-sequoia マクロファイルが、テクノロジープレビューとして利用できるようになりました。使用を有効にするには、次の手順を実行します。

  1. 以下のパッケージをインストールします。

    # dnf install rpm-sign sequoia-sq
  2. macros.rpmsign-sequoia ファイルを /etc/rpm/ ディレクトリーにコピーします。

    $ cp /usr/share/doc/rpm/macros.rpmsign-sequoia /etc/rpm/
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る