4.4. ソフトウェア管理
dnf4 を使用して DNF コマンドを実行できます
この更新により、dnf または dnf4 のいずれかを入力して DNF コマンドを実行できるようになりました。
DNF で RPM パッケージの RPMv6 署名を検証できます
耐量子計算機暗号はソフトウェアの整合性と提供元を保証するものです。しかし、量子コンピューティングにおいては、RSA などの標準的な非対称暗号化アルゴリズムはもはや有効ではありません。この更新により、新しい multisig DNF プラグインを使用して、標準の RPMv4 署名に加えて、RPM パッケージの RPMv6 署名を検証できるようになりました。RPMv6 署名は、ML-DSA などの耐量子計算機アルゴリズムに基づくことが可能です。
RPMv6 署名を検証するには、python3-dnf-plugin-multisig RPM パッケージを通じて multisig プラグインをインストールします。
gpgcheck オプションが True に設定されているリポジトリーからパッケージをインストール、再インストール、アップグレード、またはダウングレードするには、検証に成功することが必須です。
createrepo_c が zstd をサポートするようになりました
この機能拡張により、createrepo_c コマンドの Zstandard (zstd) 圧縮アルゴリズムのサポートが追加されました。その結果、createrepo_c が zstd で圧縮されたメタデータを読み取りおよび生成できるようになりました。
dnf が DNF の履歴で一時的なトランザクションをマークするようになりました
dnf history info コマンドが、トランザクションが永続的であったか一時的であったかを表示するようになりました。その結果、特に一時的なパッケージが多数あるシステムで、パッケージの変更を追跡しやすくなりました。
RPM がインストール中に元のパッケージのチェックサムを記録します
この更新により、RPM がインストール中に .rpm パッケージ全体の SHA256 および SHA512 ダイジェストを記録するようになりました。そのため、ユーザーは、RPM データベースからこれらのダイジェストを取得し、インストールされたパッケージが特定の .rpm ファイルに対応していることを確認できます。その結果、インストールされたパッケージセットが、DNF リポジトリーで使用可能なパッケージなど、既知の .rpm パッケージセットとビット単位で一致することを遡及的に検証することで、RHEL システムの整合性を向上させることができます。
インストールされたパッケージのパッケージダイジェストを出力するには、次のコマンドを使用します。
rpm -q --qf "[%{packagedigestalgos:hashalgo} %{packagedigests}\n]" <package_name>
$ rpm -q --qf "[%{packagedigestalgos:hashalgo} %{packagedigests}\n]" <package_name>
新しい %_pkgverify_digests マクロを設定することで、データベースに記録されるダイジェストタイプをカスタマイズすることもできます。次に例を示します。
%_pkgverify_digests 8:10
%_pkgverify_digests 8:10
RPM が spec ファイルローカルなファイル属性と依存関係ジェネレーターをサポートするようになりました
ファイル属性とその依存関係ジェネレーターは、通常、別々のパッケージに同梱されるため、これらの属性を使用するパッケージをビルドする前にインストールする必要があります。しかし、場合によっては、ファイル属性を同梱するパッケージのビルド中にこの属性を有効にする必要があります。また、パッケージをビルドするためだけにファイル属性が必要で、属性をパッケージに同梱せずに済ませたいという場合もあります。
この更新により、次の手順を実行することで、spec ファイルローカルなファイル属性とジェネレーターを登録できるようになりました。
-
%_local_file_attrsマクロを定義します。%_local_file_attrsは、specファイルに直接登録する新しい属性名のコロン区切りリストを受け入れます。 -
各属性に対して、
%__NAME_providesや%__NAME_pathなどの 1 つ以上の依存関係ジェネレーターマクロを定義します。NAMEはローカルファイル属性の名前です。
これにより、RPM が、spec ファイルのビルド時に、依存関係の生成にファイル属性を使用するようになります。その結果、必ずしもインストール用ではないビルド時のファイル属性を作成することが可能になります。
たとえば、次の spec ファイルスニペットは、パッケージのソースにバンドルされている foobar.sh スクリプトを使用して、パッケージ化される各ファイルの provides を生成します。
Source1: foobar.sh
[...]
%define _local_file_attrs foobar
%define __foobar_provides %{SOURCE1}
%define __foobar_path .*
Source1: foobar.sh
[...]
%define _local_file_attrs foobar
%define __foobar_provides %{SOURCE1}
%define __foobar_path .*
新しい $releasever_major および $releasever_minor 変数
RHEL のマイナーバージョンではなく、メジャーバージョンごとにコンテンツを配布する Extra Packages for Enterprise Linux (EPEL) リポジトリーやその他のリポジトリーより適切にサポートするために、新しい $releasever_major および $releasever_minor 変数が利用可能になりました。これらの変数は、$releasever 変数または system-release(releasever_major) および system-release(releasever_minor) 仮想 Provides から自動的に導出されます。そのため、$releasever_major と $releasever_minor を使用して、RHEL の複数のメジャーバージョンまたはマイナーバージョンにまたがって機能するリポジトリー設定ファイルを作成できます。