6.5. ソフトウェア管理
リポジトリーのメタデータがデフォルトでダウンロードされなくなる
以前は、リポジトリーのメタデータをダウンロードすると、ファイルリストのメタデータがデフォルトでダウンロードされていました。ファイルリストのメタデータは大きく、通常は必要ありません。この更新により、このメタデータはデフォルトでダウンロードされなくなり、応答性が向上し、ディスク領域が節約されます。ファイルリストメタデータもリポジトリーからダウンロードまたは更新されなくなり、dnf
コマンドを実行しても DNF トランザクションにロードされなくなります。dnf
コマンドにファイルリストメタデータが必要な場合、またはファイル関連の引数が含まれている場合、メタデータは自動的にロードされます。
パッケージに、ファイルリストメタデータを解決する必要があるファイルパス依存関係がある場合、依存関係解決エラーと次のヒントが表示されてトランザクションは失敗します。
(try to add '--skip-broken' to skip uninstallable packages or '--setopt=optional_metadata_types=filelists' to load additional filelists metadata)
(try to add '--skip-broken' to skip uninstallable packages or '--setopt=optional_metadata_types=filelists' to load additional filelists metadata)
デフォルトのファイルリストメタデータのダウンロードを再度有効にする場合は、/etc/dnf/dnf.conf
設定ファイルの optional_metadata_types
オプションに filelists
値を追加します。
Jira:RHEL-12355[1]
DNF が PGP キーの処理に librpmio
を使用するようになる
RPM パッケージの署名を検証するために、RPM は以前使用されていたカスタム PGP パーサーの代わりに rpm-sequoia
ライブラリーを使用します。この更新により、DNF リポジトリーの PGP 署名を検証できる librepo
ライブラリーも、librpmio
ライブラリーを通じて rpm-sequoia
を使用するようになりました。その結果、一貫したユーザーエクスペリエンスを提供するために、dnf
、librpm
、および rpm
コンポーネントは、同じ PGP 実装を使用するようになりました。
dnf-plugins-core
がバージョン 4.7.0 で提供される
RHEL 10 では、新しい python3-dnf-plugin-pre-transaction-actions
パッケージを含むバージョン 4.7.0 の dnf-plugins-core
パッケージが提供されます。このパッケージには、RPM トランザクションの開始時にコマンドを実行できる新しい pre-transaction-actions
DNF プラグインが含まれています。詳細は、システムの dnf-pre-transaction-actions(8)
man ページを参照してください。
createrepo_c
がバージョン 1.0.0 で提供される
RHEL 10 では、createrepo_c
パッケージがバージョン 1.0.0 で提供されます。以前のバージョンに対する主な変更点は、以下のとおりです。
-
デフォルトの圧縮が
gz
からzstd
に変更され、より小さいメタデータが提供され、解凍が高速になりました。gz
圧縮は引き続きサポートされていることに注意してください。 -
時間とディスク容量を節約するために、SQLite データベース形式のメタデータはデフォルトでは生成されなくなりました。
--database
スイッチまたはsqliterepo_c
ツールを使用して、引き続きこのメタデータを作成できる点に注意してください。 group.xml
メタデータの管理が標準化されました。以前は、このメタデータが圧縮版と非圧縮版の両方で二重に存在していました。この更新により、グループメタデータは圧縮版として 1 回だけ存在し、group
メタデータタイプを持つようになります。注記group.xml
メタデータは、RHEL 7 の YUM と互換性がありません。必要に応じて、modifyrepo_c
コマンドを使用して、古いレイアウトでリポジトリーを引き続き作成することもできます。
Jira:RHELDOCS-18997[1]
DNF、PackageKit、microdnf
ツールは、アップグレード中に新しく推奨されたパッケージのみをインストールするようになる
exclude_from_weak_autodetect
オプションは、インストール済みパッケージの未解決な弱い依存関係を自動検出し、それらの未解決な依存関係を満たすパッケージのインストールをブロックできます。この更新前は、このオプションはデフォルトで False
に設定されていました。その結果、一部の弱い依存関係が以前にインストールされていなかったとしても、パッケージをアップグレードするときに、パッケージの既存の弱い依存関係がすべてインストールされました。この更新では、exclude_from_weak_autodetect
オプションのデフォルト値が true
に設定されました。その結果、DNF、PackageKit、または microdnf
ツールを使用したアップグレード中に、新しく推奨されたパッケージのみがインストールされるようになりました。
/etc/dnf/dnf.conf
設定ファイルで exclude_from_weak_autodetect
のデフォルト値を手動で変更できます。
Jira:RHELDOCS-19415[1]
RPM データベースが /usr
に再配置される
この更新により、RPM データベースは /var/lib/rpm
ディレクトリーから /usr/lib/sysimage/rpm
ディレクトリーに移動されました。データベースを /usr
に保存すると、/var
の内容を考慮する必要がなくなるため、システムスナップショットの作成とロールバックが簡素化されます。また、これは RHEL が RHEL CoreOS などの rpm-ostree
ベースのシステムとも整合性が取れる形になります。これらのシステムでは、すでに RPM データベースが /usr
ディレクトリー以下に保存されています。
RPM の機能に変更はないため、この変更は大多数のユーザーに目に見える影響はありません。ただし、通常は /usr
ディレクトリーを含む OS レベルのスナップショットを実行する上級ユーザーは、ロールバック時にシステム状態を保持するために、/var/lib/rpm
にある RPM データベースをスナップショットに含める必要がなくなりました。
Jira:RHELDOCS-19417[1]
古いプロセスのリストから systemd
サービスを除外するための新しい --exclude-services
フラグ
dnf needs-restarting --services
を使用して、再起動が必要な systemd
サービスをリスト表示できます。この更新により、dnf needs-restarting
に新しい --exclude-services
フラグが追加されました。このフラグを使用すると、古いプロセスのリストから systemd
サービスを除外できます。
Image Mode for RHEL では、ユーザーが dnf --transient
を使用して、再起動時にリセットされるパッケージトランザクションを実行できるようになる
以前は、Image Mode for RHEL では、bootc usr-overlay
コマンドを実行してシステムのロックを解除し、DNF コマンドを実行して変更を加えることで、パッケージを一時的にインストール、削除、アップグレードできました。bootc usr-overlay
を使用する場合にシステムを再起動すると、/usr
ディレクトリーのオーバーレイが消え、そこに行われたすべての変更がリセットされます。/etc
内の設定や /var
内のプログラム状態など、他のディレクトリーへの変更は、再起動後も保持されます。
この更新により、bootc システムでのユーザーエクスペリエンスを向上させるために、新しい --transient
フラグと新しい persistence
設定オプションが DNF に追加されました。次のいずれかのオプションを使用して、bootc usr-overlay
ステップをスキップできるようになりました。
-
dnf --transient
コマンドを使用します。 -
dnf.conf
ファイルで、persistence
オプションをtransient
に設定します。
bootc usr-overlay
、--transient
、および persistence=transient
を使用することにより、トランザクションの前、最中、および後に、/usr
ディレクトリーが他のプロセスに対して読み取り専用のままになります。
たとえば、make
パッケージを一時的にインストールするには、次のように入力します。
dnf install --transient make
# dnf install --transient make