RHEL9では、従来の yum に代わる次世代のパッケージ管理ツール dnf (旧yum)がさらに進化し、多くの新機能が追加されました。
これらの機能を活用することで、パッケージ管理をより効率化できます。
そこで今回、厳選した新機能を5つ紹介します。
1. モジュール管理
■機能
- アプリケーションに必要なパッケージをまとめてインストール
- 特定のバージョンのアプリケーションをインストール
- 複数のアプリケーション環境を共存
■サンプルコマンド
# 利用可能なモジュールのリストを表示
dnf module list
# "Node.js" モジュールのリスト表示
dnf module list nodejs
# "Node.js" モジュールのプロファイル情報を表示
dnf module info --profile nodejs
# "Node.js" のバージョン20の開発モジュールをインストール
dnf module install nodejs:20/development
dnf moduleでのインストールはdnf installよりもさらに細分化された形でインストールできる機能となっています。
バージョン管理がmoduleの方が容易でmoduleに登録がある場合は、moduleからインストールする便利です。
■サンプル画像
Stream
特定のモジュールが提供するバージョンの流れを表します。モジュールは複数のStreamを持つことがあり、それぞれが異なるソフトウェアのバージョンを提供します。
- [d] (default): デフォルトのStreamを示します。特に指定がない場合にインストールされるバージョンです。
- [e] (enabled): 現在有効化されているStreamを示します。これが指定されている場合、そのStreamが有効になっています。
Profiles
モジュール内のパッケージセットのグループを定義し、特定の用途に応じたインストールを簡単にするためのものです。各モジュールには複数のProfileが存在することがあります。
- common[d]
common: 一般的な用途に必要なパッケージセットを提供します。
[d]:このプロファイルがデフォルトであることを示します。 - development
development:開発環境に必要なパッケージセットを提供します。 - minimal
minimal:最小限のパッケージセットを提供します。 - common[d][i]
common: 一般的な用途に必要なパッケージセットを提供します。
[d]:このプロファイルがデフォルトであることを示します。
[i]:このプロファイルが現在インストールされていることを示します。
2.リポジトリの管理
■機能
- リポジトリの有効化/無効化
- リポジトリの優先順位設定
- GPG キーによるリポジトリの認証
■サンプルコマンド
# リポジトリ一覧を表示
dnf repolist
# すべてのリポジトリ一覧を表示
dnf repolist --all
# CodeReady Builderリポジトリを有効化
dnf config-manager --enable codeready-builder-for-rhel-9-x86_64-rpms
# EPELリポジトリをインストール
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
※"dnf config-manager"コマンドでCodeReady Builderリポジトリを有効化できなかった場合は以下のコマンドを実行してください。
# CodeReady Builderリポジトリを有効化
subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
->一度、サブスクリプションマネージャーを介してリポジトリを有効化すると、DNFの config-manager
コマンドを使用してリポジトリを有効化・無効化するができません
EPELリポジトリなどの外部リポジトリを利用する場合、依存関係に注意する必要があり「codeready-builder-for-rhel-9-$(arch)-rpms」リポジトリを有効にする必要があります。
EPELリポジトリは、さまざまなサードパティ―のソフトウェアを提供するためのもので、その一部が「codeready-builder-for-rhel-9-$(arch)-rpms」リポジトリのパッケージに依存している場合があるのでEPELなどの外部リポジトリを利用する前に利用可能にしておく必要があります。
■サンプル画像
3.セキュリティ関連の改善
■機能
- 脆弱性のあるパッケージの自動更新
- セキュリティ署名の検証
- パッケージの来歴追跡
■サンプルコマンド
# インストールされたすべてのパッケージを最新のバージョンにアップデート
dnf update
# インストールされたパッケージを最新のバージョンにアップグレード
dnf upgrade
# セキュリティ関連の修正を含むパッケージだけをアップグレード
dnf upgrade --security
dnf update:
新しいパッケージのインストールは行われません。既存のパッケージが更新されるだけです。
古いバージョンのパッケージは削除されません。
dnf upgrade:
新しいバージョンのパッケージが利用可能であれば、それらがインストールされる場合があります。
新しいバージョンのパッケージがインストールされると、古いバージョンのパッケージは削除される場合があります。
dnf upgrade --security:
オプションを使用すると、セキュリティ関連のパッケージにのみ変更が適用されるため、他のパッケージに影響はありません。
securityオプションを使用しない場合、システム上のすべてのパッケージが変更される可能性があります。これには、セキュリティ関連のパッケージだけでなく、他のパッケージも含まれます。
■サンプル画像
4.パッケージの検索とインストールの改善
■機能
- パッケージの検索機能強化
- 高速なダウンロード
- 依存関係の自動解決
■サンプルコマンド
# パッケージ名に "docker" を含むパッケージを検索
dnf search docker
# vim パッケージをインストール
dnf install docker
# vim パッケージのインストール中に依存関係の競合が発生しても削除を許可してインストールを続行
dnf install --allowerasing docker
# パッケージキャッシュを更新
dnf makecache
dnf search:
リポジトリ内のすべてのパッケージに対して、パッケージ名や説明にキーワードが含まれているものを検索し、結果を表示します。
特定のパッケージが含まれているかどうかを確認したり、パッケージ名や概要に関する情報を得るために便利です。
dnf install:
コマンドを使用してパッケージをインストールする場合、既存のパッケージが依存関係の解決によって削除されることはありません。
dnf install --allowerasing:
依存関係の解決の過程で、必要な場合に既存のパッケージを削除することが許可されます。
dnf makecache:
最新のパッケージ情報をダウンロードしてローカルのキャッシュディレクトリに保存します。
その為、インターネットのリポジトリから情報を再度ダウンロードする必要がなくなります。
■サンプル画像
5.トランザクション履歴の改善
■機能
- 詳細な履歴記録
- 履歴からのロールバック
■サンプルコマンド
# 過去のトランザクション履歴を表示
dnf history list
# 特定のトランザクションの詳細を表示
dnf history info <transaction-id>
# 特定のトランザクションをロールバック
dnf history rollback <transaction-id>
dnf history rollbackを使用すると、指定したトランザクションIDに関連する過去のトランザクションにロールバックされます。これにより、指定したトランザクションが実行された時点のシステムの状態に戻ることができます。
これは、不具合のあるパッケージのインストールやアップグレードが原因でシステムに問題が発生した場合や、システムが以前の状態に戻る必要がある場合に便利です。
■サンプル画像
コメント