DNF ツールを使用したソフトウェアの管理
DNF ソフトウェア管理ツールを使用した RPM リポジトリー内のコンテンツの管理
概要
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 Red Hat Enterprise Linux 9 のソフトウェア管理ツール
Red Hat Enterprise Linux (RHEL) 9 では、DNF ユーティリティーを使用してソフトウェアを管理します。以前のメジャー RHEL バージョンとの互換性を確保するために、yum
コマンドも引き続き使用できます。ただし、RHEL 9 の yum
は、yum
とある程度の互換性を持つ dnf
のエイリアスです。
RHEL 8 と RHEL 9 はDNFをベースにしていますが、RHEL 7 で使用していたYUMとの互換性があります。
第2章 RHEL 9 のコンテンツの配布
以下のセクションでは、Red Hat Enterprise Linux 9 でのソフトウェアの配布方法を説明します。
2.1. リポジトリー
Red Hat Enterprise Linux (RHEL) は、次のようなさまざまなリポジトリーを通じてコンテンツを配信します。
- BaseOS
- BaseOS リポジトリーのコンテンツは、すべてのインストールの基盤を提供する、基礎となるオペレーティングシステム機能のコアセットで構成されています。このコンテンツは RPM 形式で提供されており、RHEL の以前のリリースと同様のサポート条件が適用されます。
- AppStream
- AppStream リポジトリーには、さまざまなワークロードとユースケースに対応するために、ユーザー空間アプリケーション、ランタイム言語、およびデータベースが同梱されます。
BaseOS コンテンツセットと AppStream コンテンツセットは両方とも RHEL に必要であり、すべての RHEL サブスクリプションで利用できます。
- CodeReady Linux Builder
- CodeReady Linux Builder リポジトリーは、すべての RHEL サブスクリプションで利用できます。このリポジトリーは、開発者向けの追加パッケージを提供します。Red Hat は、CodeReady Linux Builder リポジトリーに含まれるパッケージをサポートしていません。
関連情報
2.2. Application Streams (AppStream)
Red Hat は、複数のバージョンのユーザー空間コンポーネントを Application Streams として提供しています。Application Streams は、コアオペレーティングシステムパッケージよりも頻繁に更新されます。これにより、プラットフォームや特定デプロイメントの基本的な安定性に影響を与えることなく、Red Hat Enterprise Linux をより柔軟にカスタマイズできます。
Application Streams は以下の形式で利用できます。
- RPM 形式
- RPM 形式の拡張であるモジュール
- Software Collections
RHEL 9 では、Application Streams の初期バージョンを RPM として提供することで、Application Streams のエクスペリエンスを向上させています。RPM は、dnf install
コマンドを使用してインストールできます。
RHEL 9.1 以降、Red Hat は、より短いライフサイクルのモジュールとして追加の Application Streams バージョンを提供しています。
各 Application Streams には、RHEL 9 と同じか、それより短い独自のライフサイクルがあります。Red Hat Enterprise Linux Application Streams Life Cycle を参照してください。
インストールする必要がある Application Stream のバージョンを常に確認してください。その際には、まず RHEL Application Stream のライフサイクルを必ず確認してください。
2.3. モジュール
モジュールは、コンポーネントを表す RPM パッケージのセットです。一般的なモジュールには次のパッケージタイプが含まれます。
- アプリケーションを含むパッケージ
- アプリケーション固有の依存関係ライブラリーを含むパッケージ
- アプリケーションのドキュメントを含むパッケージ
- ヘルパーユーティリティーを含むパッケージ
2.4. モジュールストリーム
モジュールのストリームは、AppStream 物理リポジトリーで仮想的なリポジトリーとして扱えるフィルターです。モジュールストリームは、AppStream コンポーネントのバージョンです。各ストリームは別々に更新を受信し、他のモジュールストリームに依存している場合があります。
モジュールストリームは、アクティブまたは非アクティブにできます。アクティブなストリームにより、システムは特定のモジュールストリーム内の RPM パッケージにアクセスできるようになり、それぞれのコンポーネントバージョンをインストールできるようになります。
ストリームは次の場合にアクティブになります。
- 管理者が明示的に有効にした場合。
- ストリームが有効なモジュールの依存関係である場合。
- ストリームがデフォルトのストリームの場合。各モジュールにはデフォルトのストリームを設定できますが、Red Hat Enterprise Linux 9 ではデフォルトのストリームは定義されていません。必要に応じて、カスタムのデフォルトモジュールストリームとプロファイルの定義 の説明に従ってデフォルトストリームを設定できます。
あるモジュールの中で同時にアクティブにできるストリームは 1 つだけです。したがって、利用できるのは特定のストリームのパッケージだけです。
ランタイムユーザーアプリケーションまたは開発者アプリケーションに特定のストリームを選択する前に、次の点を考慮してください。
- 必要な機能と、その機能に対応するコンポーネントのバージョン
- アプリケーションとの互換性やユースケース
- Application Streams の ライフサイクル と更新計画
利用可能なモジュールおよびストリームのリストは パッケージマニフェスト を参照してください。コンポーネントごとの変更は、リリースノート を参照してください。
関連情報
2.5. モジュールプロファイル
モジュールプロファイルは、サーバー、クライアント、開発、最小インストールなど、特定のユースケースでまとめてインストールされる推奨パッケージのリストです。このパッケージリストは、モジュールストリームに含まれないパッケージ (通常は BaseOS リポジトリー、またはそのストリームの依存関係) も含みます。
利便性のため、プロファイル (一度の操作で完了) を利用してパッケージのインストールを行えます。同じモジュールストリームから複数のプロファイルを利用してパッケージをインストールすることも、特に準備などを行わずに行えます。
各モジュールストリームではプロファイル数に制限がありません (ゼロにすることも可能)。特定のモジュールストリームについて、そのプロファイルの一部を デフォルト としてマークできます。デフォルトプロファイルは、プロファイルを明示的に指定しなかった場合、プロファイルのインストールアクションに使用されます。ただし、モジュールストリームのデフォルトプロファイルは必須ではありません。
例2.1 nodejs
モジュールプロファイル
Node.js ランタイム環境を提供する nodejs
モジュールは、インストール用に次のプロファイルを提供します。
# dnf module list nodejs
Name Stream Profiles Summary
nodejs 18 common [d], development, minimal, s2i Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
この例では、次のプロファイルが利用可能です。
-
common
:実稼働環境に対応したパッケージ。これはデフォルトのプロファイル (d
) です。 -
development
:Node.js 開発ヘッダーを含む、実稼働環境に対応したパッケージ。 -
minimal
:Node.js ランタイム環境を提供するパッケージの最小セット。 -
s2i
:Node.js Source-to-Image (S2I) Linux コンテナーの作成に必要なパッケージ。
第3章 DNF の設定
DNF および関連ユーティリティーの設定は、/etc/dnf/dnf.conf
ファイルの [main]
セクションに保存されます。
次のセクションでは、/etc/dnf/dnf.conf
設定ファイルを使用して DNF を設定する方法を説明します。
- 現在の DNF 設定の表示
- DNF [main] オプションの設定
- DNF プラグインの 管理、有効化、無効化
3.1. 現在の DNF 設定の表示
/etc/dnf/dnf.conf
ファイルの [main]
セクションには、明示的に指定した設定のみが含まれます。ただし、[main]
セクションの設定はすべて表示することができます。これには、未設定でデフォルト値が使用されている設定も含まれます。
手順
グローバルの DNF 設定を表示します。
# dnf config-manager --dump
関連情報
-
dnf.conf(5)
man ページ
3.2. DNF メインオプションの設定
/etc/dnf/dnf.conf
ファイルには、1 つの [main]
セクションが含まれています。このセクションのキーと値のペアは、DNF のリポジトリーの操作方法および処理方法に影響を及ぼします。
手順
-
/etc/dnf/dnf.conf
ファイルを編集します。 -
要件に応じて
[main]
セクションを更新します。 - 変更を保存します。
関連情報
-
dnf.conf(5)
man ページの[main] OPTIONS
およびOPTIONS FOR BOTH [main] AND REPO
セクション
3.3. DNF プラグインの管理
インストールした各プラグインの /etc/dnf/plugins/
ディレクトリーには、それぞれ独自の設定ファイルが含まれている場合があります。このディレクトリー内のプラグイン設定ファイルには、<plug-in_name>.conf
という名前を付けます。通常、デフォルトではプラグインが有効になっています。これらの設定ファイルのいずれかでプラグインを無効にするには、ファイルに次の内容を追加します。
[main] enabled=False
3.4. DNF プラグインの有効化および無効化
DNF ツールでは、プラグインがデフォルトでロードされます。ただし、DNF がロードするプラグインは制御することができます。
すべてのプラグインの無効化は、潜在的な問題を診断する場合にのみ行ってください。DNF には product-id
や subscription-manager
などの特定のプラグインが必要です。それらを無効にすると、Red Hat Enterprise Linux はコンテンツ配信ネットワーク (CDN) からソフトウェアをインストールまたは更新できなくなります。
手順
次のいずれかの方法を使用して、DNF がプラグインを使用する方法を制御します。
DNF プラグインのロードをシステム全体で有効または無効にするには、
/etc/dnf/dnf.conf
ファイルの[main]
セクションにplugins
パラメーターを追加します。-
すべての DNF プラグインのロードを有効にするには、
plugins=1
(デフォルト) を設定します。 -
すべての DNF プラグインのロードを無効にするには、
plugins=0
を設定します。
-
すべての DNF プラグインのロードを有効にするには、
-
特定のプラグインを無効にするには、
/etc/dnf/plugins/<plug-in_name>.conf
ファイルの[main]
セクションにenabled=False
を追加します。 特定のコマンドですべての DNF プラグインを無効にするには、コマンドに
--noplugins
オプションを追加します。たとえば、1 つの update コマンドで DNF プラグインを無効にするには、次のように入力します。# dnf --noplugins update
1 つのコマンドで特定の DNF プラグインを無効にするには、コマンドに
--disableplugin=plugin-name
オプションを追加します。たとえば、1 つの update コマンドで特定の DNF プラグインを無効にするには、次のように入力します。# dnf update --disableplugin=<plugin_name>
1 つのコマンドで特定の DNF プラグインを有効にするには、コマンドに
--enableplugin=plugin-name
オプションを追加します。たとえば、1 つの update コマンドで特定の DNF プラグインを有効にするには、次のように入力します。# dnf update --enableplugin=<plugin_name>
第4章 RHEL 9 コンテンツの検索
以下のセクションでは、DNF を使用して、Red Hat Enterprise Linux 9 の AppStream および BaseOS リポジトリー内のコンテンツを見つけて調べる方法を説明します。
4.1. ソフトウェアパッケージの検索
必要なソフトウェアを提供するパッケージを特定するには、DNF を使用してリポジトリーを検索します。
手順
シナリオに応じて、次のいずれかのオプションを使用してリポジトリーを検索します。
パッケージの名前または概要内の用語を検索するには、次のように入力します。
$ dnf search <term>
パッケージの名前、概要、または説明内の用語を検索するには、次のように入力します。
$ dnf search --all <term>
--all
オプションを使用して説明内で追加の検索を行うと、通常の検索操作よりも時間がかかることに注意してください。パッケージ名を検索し、出力にパッケージ名とそのバージョンをリストするには、次のように入力します。
$ dnf repoquery <package_name>
ファイルを提供するパッケージを検索するには、ファイル名またはファイルへのパスを指定します。
$ dnf provides <file_name>
4.2. ソフトウェアパッケージのリスト表示
DNF を使用すると、リポジトリーで使用可能なパッケージとそのバージョンのリストを表示できます。必要に応じてこのリストをフィルタリングして、たとえば更新を利用できるパッケージのみをリストすることができます。
手順
利用可能なすべてのパッケージの最新バージョンを、アーキテクチャー、バージョン番号、インストール元のリポジトリーを含めてリスト表示します。
$ dnf list --all ... zlib.x86_64 1.2.11-39.el9 @rhel-9-for-x86_64-baseos-rpms zlib.i686 1.2.11-39.el9 rhel-9-for-x86_64-baseos-rpms zlib-devel.i686 2.11-39.el9 rhel-9-for-x86_64-appstream-rpms zlib-devel.x86_64 1.2.11-39.el9 rhel-9-for-x86_64-appstream-rpms ...
リポジトリーの前の
@
記号は、この行のパッケージが現在インストールされていることを示します。または、使用可能なすべてのパッケージを、バージョン番号とアーキテクチャーを含めて表示するには、次のように入力します。
$ dnf repoquery ... zlib-0:1.2.11-35.el9_1.i686 zlib-0:1.2.11-35.el9_1.x86_64 zlib-0:1.2.11-39.el9.i686 zlib-0:1.2.11-39.el9.x86_64 zlib-devel-0:1.2.11-39.el9.i686 zlib-devel-0:1.2.11-39.el9.x86_64 ...
必要に応じて、
--all
の代わりに他のオプションを使用して出力をフィルタリングできます。次に例を示します。-
インストールされているパッケージのみをリスト表示するには、
--installed
を使用します。 -
利用可能なすべてのパッケージをリスト表示するには、
--available
を使用します。 -
新しいバージョンを利用できるパッケージをリスト表示するには、
--upgrades
を使用します。
注記glob 表現を引数として追加することで、結果をフィルタリングできます。詳細は、DNF 入力での glob 表現の指定 を参照してください。
-
インストールされているパッケージのみをリスト表示するには、
4.3. リポジトリーのリスト表示
システムで有効または無効になっているリポジトリーの概要を取得するには、リポジトリーをリスト表示します。
手順
システムで有効になっているすべてのリポジトリーをリスト表示します。
$ dnf repolist
特定のリポジトリーのみを表示するには、次のいずれかのオプションをコマンドに追加します。
-
--disabled
を追加すると、無効なリポジトリーのみがリストされます。 -
--all
を追加すると、有効なリポジトリーと無効なリポジトリーの両方がリストされます。
-
オプション: リポジトリーの追加情報をリストします。
$ dnf repoinfo <repository_name>
注記グローバル式を使用して結果をフィルタリングできます。詳細は、DNF 入力での glob 表現の指定 を参照してください。
4.4. パッケージ情報の表示
DNF リポジトリーをクエリーして、次のようなパッケージに関する詳細を表示できます。
- バージョン
- リリース
- アーキテクチャー
- パッケージサイズ
- 説明
手順
1 つ以上の利用可能なパッケージに関する情報を表示します。
$ dnf info <package_name>
このコマンドは、現在インストールされているパッケージの情報と、リポジトリー内にあるその新しいバージョン (利用可能な場合) の情報を表示します。または、次のコマンドを使用して、指定した名前を持つ、リポジトリー内のすべてのパッケージの情報を表示します。
$ dnf repoquery --info <package_name>
注記glob 表現を引数として追加することで、結果をフィルタリングできます。詳細は、DNF 入力での glob 表現の指定 を参照してください。
4.5. パッケージグループとグループが提供するパッケージのリスト表示
パッケージグループには複数のパッケージをバンドルされています。パッケージグループを使用すると、グループに割り当てられたすべてのパッケージを 1 回の手順でインストールできます。ただし、インストールする前に、必要なパッケージグループの名前を特定する必要があります。
手順
インストールされているグループと使用可能なグループの両方をリストします。
$ dnf group list
dnf group list
コマンドに--installed
および--available
オプションを追加すると、結果をフィルタリングできます。--hidden
オプションを使用すると、出力に非表示のグループを表示できます。特定のグループに含まれる必須、オプション、およびデフォルトのパッケージをリストします。
$ dnf group info "<group_name>"
注記glob 表現を引数として追加することで、結果をフィルタリングできます。詳細は、DNF 入力での glob 表現の指定 を参照してください。
オプション: インストールされているグループと利用可能なグループの数を表示します。
$ dnf group summary
4.6. 利用可能なモジュールとその内容の一覧表示
DNF を使用してモジュールを検索し、モジュールに関する情報を表示すると、モジュールをインストールする前に、リポジトリーで使用可能なモジュールを特定し、適切なストリームを選択できます。
手順
次のいずれかの方法でモジュール情報をリスト表示します。
利用可能なすべてのモジュールをリストします。
$ dnf module list Name Stream Profiles Summary ... nodejs 18 common [d], development, minimal, s2i Javascript runtime postgresql 15 client, server PostgreSQL server and client module ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
特定のモジュールのみを対象に同じ情報をリスト表示するには、
dnf module list <module_name>
コマンドを使用します。どのモジュールが特定のパッケージを提供しているかを検索します。
$ dnf module provides <package_name>
たとえば、
npm
パッケージを提供するモジュールとプロファイルを表示するには、次のように入力します。# dnf module provides npm npm-1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697.x86_64 Module : nodejs:18:9010020221009220316:rhel9:x86_64 Profiles : common development s2i Repo : rhel-9-for-x86_64-appstream-rpms Summary : Javascript runtime ...
モジュールの詳細をリスト表示するには、次のいずれかの方法を使用します。
説明、すべてのプロファイルのリスト、モジュールが提供するすべてのパッケージのリストなど、モジュールに関するすべての詳細をリストします。
$ dnf module info <module_name>
たとえば、
nodejs
パッケージに関する詳細を表示するには、次のように入力します。$ dnf module info nodejs Name : nodejs Stream : 18 Version : 9010020221009220316 Context : rhel9 Architecture : x86_64 Profiles : common [d], development, minimal, s2i Default profiles : common Repo : rhel-9-for-x86_64-appstream-rpms Summary : Javascript runtime Description : Node.js is a platform built on Chrome's JavaScript runtime... Requires : platform:[el9] Artifacts : nodejs-1:18.10.0-3.module+el9.1.0+16866+0fab0697.src : nodejs-1:18.10.0-3.module+el9.1.0+16866+0fab0697.x86_64 : npm-1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697.x86_64 ...
各モジュールプロファイルがインストールするパッケージをリストします。
$ dnf module info --profile <module_name>
たとえば、
nodejs
モジュールのこの情報を表示するには、次のように入力します。$ dnf module info --profile nodejs Name : nodejs:18:9010020221009220316:rhel9:x86_64 common : nodejs : npm development : nodejs : nodejs-devel : npm minimal : nodejs s2i : nodejs : nodejs-nodemon : npm ...
関連情報
4.7. DNF 入力での glob 表現の指定
1 つ以上の glob 表現を引数として追加することで、dnf
コマンドの結果をフィルタリングできます。
手順
dnf
コマンドで glob 表現を使用する場合は、次のいずれかの方法を使用します。glob 表現全体を一重引用符または二重引用符で囲みます。
# dnf provides "*/<file_name>"
<file_name>
の前に、絶対パスの場合は/
を付ける必要があります。フルパスが不明な場合にワイルドカードを使用するには、*/
を付ける必要があります。ワイルドカード文字の前にはバックスラッシュ (
\
) を追加して、ワイルドカード文字をエスケープします。# dnf provides \*/<file_name>
第5章 RHEL 9 コンテンツのインストール
以下のセクションでは、Red Hat Enterprise Linux 9 にコンテンツをインストールする方法を説明します。
- モジュール、ストリーム、プロファイルによって提供される パッケージ、パッケージグループ、または パッケージのセット をインストールします。
- デフォルトのモジュールストリームとプロファイルを定義します。
5.1. パッケージのインストール
ソフトウェアがデフォルトのインストールに含まれていない場合は、手動でインストールできます。DNF は依存関係を自動的に解決してインストールします。
前提条件
- オプション: インストールするパッケージの名前がわかっている。
- インストールするパッケージがモジュールストリームによって提供されている場合、それぞれのモジュールストリームが有効になっている。
手順
次のいずれかの方法を使用してパッケージをインストールします。
リポジトリーからパッケージをインストールするには、次のように入力します。
# dnf install <package_name_1> <package_name_2> ...
i686
やx86_64
などの複数のアーキテクチャーをサポートするシステムにパッケージをインストールする場合は、パッケージ名にそれを追加することで、パッケージのアーキテクチャーを指定できます。# dnf install <package_name>.<architecture>
パッケージが提供するファイルへのパスだけがわかっていて、パッケージ名がわからない場合にパッケージをインストールするには、次のパスを使用して対応するパッケージをインストールできます。
# dnf install <path_to_file>
ローカル RPM ファイルをインストールするには、次のように入力します。
# dnf install <path_to_RPM_file>
パッケージに依存関係がある場合は、これらの RPM ファイルへのパスも指定します。指定しなかった場合、DNF はリポジトリーから依存関係をダウンロードします。依存関係がリポジトリーで利用できない場合は失敗します。
関連情報
5.2. パッケージグループのインストール
パッケージグループには複数のパッケージをバンドルされています。パッケージグループを使用すると、グループに割り当てられたすべてのパッケージを 1 回の手順でインストールできます。
手順
パッケージグループをインストールします。
# dnf group install <group_name_or_ID>
5.3. モジュールコンテンツのインストール
特定のソフトウェアについては、Red Hat がモジュールを提供しています。モジュールを使用して、特定のバージョン (ストリーム) とパッケージのセット (プロファイル) をインストールできます。
手順
インストールするパッケージを提供するモジュールをリスト表示します。
# dnf module list <module_name>
たとえば、
nodejs
モジュールの詳細をリスト表示するには、次のように入力します。# dnf module list nodejs Name Stream Profiles Summary nodejs 18 common [d], development, minimal, s2i Javascript runtime nodejs ... common [d], development, minimal, s2i Javascript runtime Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
モジュールをインストールします。
# dnf module install <module_name>:<stream>/<profile>
ストリームのデフォルトプロファイルが定義されている場合は、コマンドの
/<profile>
を省略して、このストリームのデフォルトプロファイルをインストールできます。注記Red Hat Enterprise Linux 9 では、デフォルトのモジュールストリームは事前定義されていません。ただし、前述のようにモジュールのインストール時にストリームを指定する場合は、事前にストリームを手動で有効にする必要はありません。
たとえば、
nodejs
モジュールのストリーム18
からデフォルトのプロファイル (common
) をインストールするには、次のように入力します。# dnf module install nodejs:18 ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Installing group/module packages: nodejs x86_64 ... rhel-9-for-x86_64-appstream-rpms 12 M npm x86_64 ... rhel-9-for-x86_64-appstream-rpms 2.5 M Installing weak dependencies: nodejs-docs noarch .. rhel-9-for-x86_64-appstream-rpms 7.6 M nodejs-full-i18n x86_64 .. rhel-9-for-x86_64-appstream-rpms 8.4 M Installing module profiles: nodejs/common Enabling module streams: nodejs 18
検証
正しいモジュールストリームが有効になっており (
[e]
)、必要なプロファイルがインストールされている ([i]
) ことを確認します。# dnf module list nodejs Updating Subscription Management repositories. Last metadata expiration check: 0:33:24 ago on Mon 24 Jul 2023 04:59:01 PM CEST. Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary nodejs 18 [e] common [d] [i], development, minimal, s2i Javascript runtime ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
関連情報
5.4. カスタムのデフォルトモジュールストリームとプロファイルの定義
Red Hat Enterprise Linux 9 では、AppStream リポジトリーにデフォルトのストリームが定義されていません。ただし、デフォルトのモジュールストリームとデフォルトのモジュールプロファイルを設定できます。設定すると、デフォルトのモジュールのストリームとプロファイルをインストールするときに、その情報を省略できます。
手順
dnf module list <module_name>
コマンドを使用して、利用可能なストリームとそのプロファイルを表示します。次に例を示します。# dnf module list nodejs Name Stream Profiles Summary nodejs 18 common [d], development, minimal, s2i Javascript runtime
この例では、
nodejs:18
はデフォルトストリームとして設定されておらず、このストリームのデフォルトプロファイルはcommon
です。/etc/dnf/modules.defaults.d/
ディレクトリーに YAML ファイルを作成して、モジュールのデフォルトのストリームとプロファイルを定義します。たとえば、次の内容を含む
/etc/dnf/modules.defaults.d/nodejs.yaml
ファイルを作成して、nodejs
モジュールのデフォルトストリームとして18
を定義し、デフォルトプロファイルとしてminimum
を定義します。document: modulemd-defaults version: 1 data: module: nodejs stream: "18" profiles: '18': [minimal]
検証
dnf module list <module_name>
コマンドを使用して、新しいデフォルトのストリームとプロファイルの設定を確認します。次に例を示します。# dnf module list nodejs Name Stream Profiles Summary nodejs 18 [d] common, development, minimal [d], s2i Javascript runtime
関連情報
第6章 RHEL 9 コンテンツの更新
DNF では、システムに保留中の更新があるかどうかを確認できます。更新が必要なパッケージをリスト表示して、1 つのパッケージ、複数のパッケージ、またはすべてのパッケージを一度に更新できます。更新パッケージに依存関係がある場合は、合わせて更新されます。
以下のセクションでは、DNF を使用して Red Hat Enterprise Linux 9 のコンテンツを更新する方法を説明します。
6.1. 更新の確認
dnf check-update
コマンドを使用して、システムにインストールされているパッケージの利用可能な更新を確認するには、次の手順を実行します。
手順
以下のコマンドを実行して、お使いのシステムに利用可能な更新があるパッケージを確認します。
# dnf check-update
このコマンドは、更新が利用可能なパッケージおよびその依存関係のリストを表示します。
6.2. パッケージの更新
dnf upgrade
コマンドを使用して、1 つのパッケージ、パッケージグループ、またはすべてのパッケージとその依存関係を更新するには、次の手順を実行します。
手順
すべてのパッケージとその依存関係を更新するには、次のコマンドを実行します。
# dnf upgrade
1 つのパッケージを更新するには、以下のコマンドを実行します。
# dnf upgrade package-name
package-name を、パッケージ名に置き換えます。
パッケージグループを更新するには、以下を使用します。
# dnf group upgrade group-name
group-name は、パッケージグループの名前に置き換えます。
カーネルの更新を適用する際に、dnf
は、dnf upgrade
コマンドまたは dnf install
コマンドを使用しているかどうかに関わらず、新しいカーネルを常にインストールします。
6.3. セキュリティー関連パッケージの更新
dnf upgrade
または dnf upgrade-minimal
コマンドを使用してセキュリティー関連のパッケージを更新するには、次の手順を実行します。
手順
セキュリティーエラータが含まれる、利用可能な最新パッケージにアップグレードするには以下を使用します。
# dnf upgrade --security
最新のセキュリティーエラータパッケージにアップグレードするには、以下を使用します。
# dnf upgrade-minimal --security
第7章 RHEL 9 でのソフトウェア更新の自動化
パッケージの更新を自動的かつ定期的に確認してダウンロードするには、dnf-automatic
パッケージに含まれる DNF Automatic ツールを使用できます。
DNF Automatic は、DNF に対する代替のコマンドラインインターフェイスで、systemd タイマーや cron ジョブなどのツールを使用した自動実行や定期実行に適しています。
DNF Automatic は、必要に応じてパッケージメタデータを同期し、利用可能な更新を確認してから、ツールの設定方法に応じて以下のアクションのいずれかを実行します。
- 終了
- 更新済みパッケージのダウンロード
- 更新のダウンロードおよび適用
その後、標準出力やメールなど、選択したメカニズムによって操作の結果が報告されます。
以下のセクションでは、Red Hat Enterprise Linux 9 でソフトウェア更新を自動化する方法を説明します。
7.1. DNF Automatic のインストール
システムに DNF Automatic ツールをインストールするには、次の手順を実行します。
手順
dnf-automatic
パッケージをインストールします。# dnf install dnf-automatic
検証
dnf-automatic
パッケージが存在することを確認して、インストールが正常に完了したことを確認します。# rpm -qi dnf-automatic
7.2. DNF Automatic 設定ファイル
初期設定では、DNF Automatic は /etc/dnf/automatic.conf
を設定ファイルとして使用し、動作を定義します。
設定ファイルは、以下のトピックセクションに分かれています。
[commands]
セクションDNF Automatic の操作モードを設定します。
[emitters]
セクションDNF Automatic の結果が報告される方法を定義します。
[command_email]
セクション電子メールの送信に使用する外部コマンドのメールエミッター設定を提供します。
[email]
セクション電子メールエミッターの設定を提供します。
[base]
セクションDNF のメイン設定ファイルの設定を上書きします。
/etc/dnf/automatic.conf
ファイルのデフォルト設定では、DNF Automatic は利用可能な更新を確認し、ダウンロードして、標準出力として結果を報告します。
[commands]
セクションの操作モードの設定は、dnf-automatic.timer
以外のすべてのタイマーユニットに対して、systemd タイマーユニットで使用される設定によって上書きされます。
関連情報
- DNF Automatic ドキュメント
-
dnf-automatic (8)
man ページ - dnf-automatic パッケージに含まれる systemd タイマーユニットの概要
7.3. DNF Automatic の有効化
DNF Automatic を実行するには、常に特定の systemd タイマーユニットを有効にして起動する必要があります。dnf-automatic
パッケージで提供されるタイマーユニットのいずれかを使用するか、必要に応じて独自のタイマーユニットを作成することができます。
システムで DNF Automatic を有効にするには、次の手順を実行します。
前提条件
-
/etc/dnf/automatic.conf
設定ファイルを変更して、DNF Automatic の挙動を指定している。
手順
利用可能な更新をダウンロードする systemd タイマーユニットを選択、有効化、および起動するには、以下のコマンドを実行します。
# systemctl enable dnf-automatic-download.timer # systemctl start dnf-automatic-download.timer
利用可能な更新をダウンロードとインストールする systemd タイマーユニットを選択、有効化、および起動するには、以下のコマンドを実行します。
# systemctl enable dnf-automatic-install.timer
# systemctl start dnf-automatic-install.timer
利用可能な更新をレポートする systemd タイマーユニットを選択、有効化、および起動するには、以下のコマンドを実行します。
# systemctl enable dnf-automatic-notifyonly.timer
# systemctl start dnf-automatic-notifyonly.timer
ダウンロード、ダウンロードとインストール、または利用可能な更新の 報告 を行う systemd タイマーユニットを選択、有効化、および起動するには、次を使用します。
# systemctl enable dnf-automatic.timer
# systemctl start dnf-automatic.timer
必要に応じて、
--now
オプションを使用して、1 つのコマンドで systemd タイマーユニットを選択、有効化、および起動します。以下に例を示します。# systemctl enable --now dnf-automatic-download.timer
コマンドラインまたはカスタムスクリプトから /usr/bin/dnf-automatic
ファイルを直接実行して、DNF Automatic を実行することもできます。
検証
タイマーが有効化されていることを確認します。
# systemctl status <systemd timer unit>
関連情報
-
dnf-automatic (8)
man ページ - dnf-automatic パッケージに含まれる systemd タイマーユニットの概要
- DNF Automatic 設定ファイル
7.4. dnf-automatic
に含まれる systemd タイマーユニットの概要
更新のダウンロードおよび適用時に、systemd タイマーユニットが優先され、/etc/dnf/automatic.conf
設定ファイルの設定が上書きされます。
たとえば、/etc/dnf/automatic.conf
設定ファイルで download_updates = yes
と設定していても、dnf-automatic-notifyonly.timer
ユニットをアクティブにした場合は、パッケージはダウンロードされません。
dnf-automatic
パッケージには、次の systemd タイマーユニットが含まれます。
表7.1 dnf-automatic
に含まれる systemd タイマー
タイマーユニット | 機能 | /etc/dnf/automatic.conf ファイルの設定を上書きしますか ? |
---|---|---|
| キャッシュにパッケージをダウンロードし、更新を利用できるようにします。
注記:このタイマーユニットでは更新パッケージはインストールされません。インストールを実行するには、 | はい |
| 更新したパッケージをダウンロードしてインストールします。 | はい |
| リポジトリーデータのみをダウンロードして、リポジトリーキャッシュを最新の状態に保ち、利用可能な更新を通知します。 注記:このタイマーユニットでは、更新されたパッケージはダウンロードまたはインストールされません。 | はい |
|
更新のダウンロードおよび適用時のこのタイマーの動作は、
デフォルトの挙動は、 | いいえ |
関連情報
-
dnf-automatic (8)
man ページ - DNF Automatic 設定ファイル
第8章 RHEL 9 コンテンツの削除
以下のセクションでは、DNF を使用して Red Hat Enterprise Linux 9 のコンテンツを削除する方法を説明します。
8.1. インストール済みパッケージの削除
dnf remove
コマンドを使用してシステムにインストールされているパッケージを削除するには、次の手順を実行します。
手順
特定のパッケージと、使用されていない依存パッケージをすべて削除するには、以下のコマンドを実行します。
# dnf remove package-name
package-name を、パッケージ名に置き換えます。
複数のパッケージと、その未使用の依存関係を同時に削除するには、以下のコマンドを実行します。
# dnf remove package-name-1 package-name-2
package-name-1 および package-name-2 は、パッケージ名に置き換えます。
dnf
コマンドは、他の依存パッケージと一緒にパッケージを削除します。
8.2. パッケージグループの削除
dnf group remove
コマンドを使用して、グループ名または groupID のいずれかでパッケージグループを削除するには、次の手順を実行します。
手順
グループ名を使用してパッケージグループを削除するには、以下を使用します。
# dnf group remove group-name
group-name は、グループの完全な名前に置き換えます。
groupID でパッケージグループを削除するには、以下を使用します。
# dnf group remove groupID
groupID は、グループの ID に置き換えます。
8.3. インストールしたモジュラーコンテンツの削除
インストールしたモジュールコンテンツを削除する場合は、選択したプロファイル または 全ストリーム からパッケージを削除できます。
DNF は、プロファイルまたはストリームでインストールされたパッケージに対応する名前を持つパッケージ (依存パッケージを含む) をすべて削除しようとします。(特にシステムでカスタムリポジトリーを有効にしている場合は) 続行する前に、削除するパッケージのリストを常に確認してください。
8.3.1. インストール済みプロファイルからのパッケージの削除
プロファイルとともにインストールしたパッケージを削除すると、そのプロファイルによりインストールされたパッケージに対応する名前を持つパッケージがすべて削除されます。これには、依存関係も含まれます。ただし、別のプロファイルで必要とされるパッケージは除外されます。
選択したプロファイルからのパッケージを削除するには、次の手順を実行します。
前提条件
-
選択したプロファイルは、
dnf module install module-name:stream/profile
コマンドを使用してインストールされているか、dnf install module-name:stream command
を使用してデフォルトプロファイルとしてインストールされている。 - モジュールの依存関係の解決 を理解している。
手順
選択したプロファイルに属するパッケージをアンインストールします。
# dnf module remove module-name:stream/profile
module-name、stream、および profile を、アンインストールするモジュール、ストリーム、およびプロファイルに置き換えます。
または、ストリームにインストールされているすべてのプロファイルからパッケージをアンインストールします。
# dnf module remove module-name:stream
この操作は、プロファイルに属さないパッケージをストリームから削除しません。
-
削除トランザクションに進む前に、
Removing:
およびRemoving unused dependencies:
にあるパッケージのリストを確認してください。
選択したストリームからすべてのパッケージを削除するには、セクション 8.3.2 モジュールストリームから全パッケージを削除 の手順に従います。
例8.1 選択したプロファイルからパッケージを削除
以下は、nodejs:18
モジュールストリームの development
プロファイルに属するパッケージとその依存関係を削除する方法の例です。
この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。
使用可能なすべてのプロファイルを含む
nodejs:18
モジュールストリームをインストールします。# dnf module install nodejs:18/* (...) Dependencies resolved. =================================================================================== Package Architecture Version Repository Size =================================================================================== Installing group/module packages: nodejs x86_64 1:18.7.0-1.module+el9.1.0+16284+4fdefb2f rhel-AppStream 12 M nodejs-devel x86_64 1:18.7.0-1.module+el9.1.0+16284+4fdefb2f rhel-AppStream 202 k nodejs-nodemon noarch 2.0.15-1.module+el9.1.0+15718+e52ec601 rhel-AppStream 762 k npm x86_64 1:8.15.0-1.18.7.0.1.module+el9.1.0+16284+4fdefb2f rhel-AppStream 2.2 M Installing dependencies: brotli x86_64 1.0.9-6.el9 rhel-AppStream 314 k brotli-devel x86_64 1.0.9-6.el9 rhel-AppStream 36 k ... Installing weak dependencies: nodejs-docs noarch 1:18.7.0-1.module+el9.1.0+16284+4fdefb2f rhel-AppStream 7.2 M nodejs-full-i18n x86_64 1:18.7.0-1.module+el9.1.0+16284+4fdefb2f rhel-AppStream 8.2 M Installing module profiles: nodejs/common nodejs/development nodejs/minimal nodejs/s2i Transaction Summary =================================================================================== Install 31 Packages Total download size: 36 M Installed size: 165 M Is this ok [y/N]: y (...) Complete!
インストールされたプロファイルを検査します。
$ dnf module info nodejs ... Name : nodejs Stream : 18 [e] [a] Version : 9010020221009220316 Context : rhel9 Architecture : x86_64 Profiles : common [d] [i], development [i], minimal [i], s2i [i] Default profiles : common Repo : rhel-AppStream ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
出力に示されているように、すべてのプロファイルがインストールされます。
development
プロファイルとその依存関係からのパッケージを削除します。# dnf module remove nodejs:18/development (...) Dependencies resolved. ======================================================================== Package Architecture Version Repository Size ======================================================================== Removing: nodejs-devel x86_64 1:18.7.0-1.module+el9.1.0+16284+4fdefb2f @rhel-AppStream 950 k Removing unused dependencies: brotli x86_64 1.0.9-6.el9 @rhel-AppStream 754 k brotli-devel x86_64 1.0.9-6.el9 @rhel-AppStream 55 k ... Disabling module profiles: nodejs/development Transaction Summary ======================================================================== Remove 26 Packages Freed space: 8.3 M Is this ok [y/N]: y
削除後にインストールされたプロファイルを検査します。
$ dnf module info nodejs ... Name : nodejs Stream : 18 [e] [a] Version : 9010020221009220316 Context : rhel9 Architecture : x86_64 Profiles : common [d] [i], development, minimal [i], s2i [i] Default profiles : common Repo : rhel-AppStream Summary : Javascript runtime ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
development
を除くすべてのプロファイルが現在インストールされています。
8.3.2. モジュールストリームから全パッケージを削除
モジュールストリームでインストールしたパッケージを削除すると、そのストリームによりインストールされたパッケージに対応する名前を持つパッケージがすべて削除されます。これには、その依存関係も含まれます。ただし、その他のモジュールで必要なパッケージは除外されます。
選択したモジュールストリームからのパッケージをすべて削除するには、次の手順を実行します。
前提条件
- モジュールストリームが有効になり、少なくともいくつかのパッケージがストリームからインストールされている。
- モジュールの依存関係の解決 を理解している。
手順
選択したストリームからパッケージをすべて削除します。
# dnf module remove --all module-name:stream
module-name および stream を、アンインストールするモジュールおよびストリームに置き換えます。
-
削除トランザクションに進む前に、
Removing:
およびRemoving unused dependencies:
にあるパッケージのリストを確認してください。 - 必要に応じて、ストリームをリセットまたは無効にします。
選択したプロファイルからパッケージのみを削除する場合は、セクション 8.3.1.インストール済みプロファイルからのパッケージの削除 の手順を行います。
例8.2 ストリーム全体からパッケージを削除
以下は、nodejs:18
モジュールストリームからのパッケージをすべて削除する方法の例です。
この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。
使用可能なすべてのプロファイルを含む
nodejs:18
モジュールストリームをインストールします。# dnf module install nodejs:18/* (...) Dependencies resolved. =================================================================================== Package Architecture Version Repository Size =================================================================================== Installing group/module packages: nodejs x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 rhel-AppStream 13 M nodejs-devel x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 rhel-AppStream 203 k nodejs-nodemon noarch 2.0.15-1.module+el9.1.0+15718+e52ec601 rhel-AppStream 762 k npm x86_64 1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697 rhel-AppStream 2.2 M Installing dependencies: brotli x86_64 1.0.9-6.el9 rhel-AppStream 314 k brotli-devel x86_64 1.0.9-6.el9 rhel-AppStream 36 k ... Installing weak dependencies: nodejs-docs noarch 1:18.10.0-3.module+el9.1.0+16866+0fab0697 rhel-AppStream 7.3 M nodejs-full-i18n x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 rhel-AppStream 8.2 M Installing module profiles: nodejs/common nodejs/development nodejs/minimal nodejs/s2i Enabling module streams: nodejs 18 Transaction Summary =================================================================================== Install 31 Packages Total download size: 37 M Installed size: 167 M Is this ok [y/N]: y
nodejs:18
モジュールストリームからすべてのパッケージを削除します。# dnf module remove --all nodejs:18 (...) Dependencies resolved. =================================================================================== Package Architecture Version Repository Size =================================================================================== Removing: nodejs x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 @rhel-AppStream 43 M nodejs-devel x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 @rhel-AppStream 953 k nodejs-docs noarch 1:18.10.0-3.module+el9.1.0+16866+0fab0697 @rhel-AppStream 78 M nodejs-full-i18n x86_64 1:18.10.0-3.module+el9.1.0+16866+0fab0697 @rhel-AppStream 29 M nodejs-nodemon noarch 2.0.15-1.module+el9.1.0+15718+e52ec601 @rhel-AppStream 2.0 M nodejs-packaging noarch 2021.06-4.module+el9.1.0+15718+e52ec601 @rhel-AppStream 41 k npm x86_64 1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697 @rhel-AppStream 6.9 M Removing unused dependencies: brotli x86_64 1.0.9-6.el9 @rhel-AppStream 754 k brotli-devel x86_64 1.0.9-6.el9 @rhel-AppStream 55 k ... Disabling module profiles: nodejs/common nodejs/development nodejs/minimal nodejs/s2i Transaction Summary =================================================================================== Remove 31 Packages Freed space: 167 M Is this ok [y/N]: y
削除後に
nodejs
モジュールを検査します。$ dnf module info nodejs ... Name : nodejs Stream : 18 [e] [a] Version : 9010020221009220316 Context : rhel9 Architecture : x86_64 Profiles : common [d], development, minimal, s2i Default profiles : common ... Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive
Node.js モジュールストリームは現在インストールされていません。
8.4. 関連情報
第9章 パッケージ管理履歴の処理
dnf history
コマンドを使用すると、以下の情報を確認できます。
- DNF トランザクションのタイムライン
- トランザクションの発生日時
- トランザクションにより影響を受けたパッケージの数
- トランザクションの成功または中止の有無
- トランザクション間で RPM データベースが変更された場合
dnf history
コマンドを使用して、トランザクションを元に戻したり、やり直したりすることもできます。
以下のセクションでは、dnf history
コマンドを使用してパッケージ管理履歴を処理する方法を説明します。
- 最新のトランザクション、選択したパッケージの最新の操作、および特定のトランザクションに関する詳細の一覧表示
dnf history undo
およびdnf history rollback
コマンドを使用して DNF トランザクションを元に戻す- 単一の DNF トランザクションを元に戻す
- 指定したトランザクションと最後のトランザクションの間に実行された すべての DNF トランザクションを元に戻す
- 選択したトランザクションまたは最後のトランザクションの繰り返し
9.1. トランザクションのリスト表示
最新の DNF トランザクション、選択したパッケージの最新の操作、および特定のトランザクションの詳細を一覧表示するには、次の手順を実行します。
手順
最新の DNF トランザクションのリストを表示するには、以下のコマンドを実行します。
# dnf history
注記出力された
Action(s)
列には、トランザクション中に実行されたアクションのタイプが表示されます (例: インストール (I
)、アップグレード (U
)、削除 (E
) など)。Altered
列には、トランザクション中に実行されたアクションの数が表示されます。アクションの数の後に、トランザクションの結果を指定することもできます。Action(s)
およびAltered
列の値の詳細は、dnf(8)
の man ページを参照してください。選択したパッケージの最新操作のリストを表示するには、以下を使用します。
# dnf history list package-name
package-name を、パッケージ名に置き換えます。
特定のトランザクションの詳細を表示するには、以下のコマンドを実行します。
# dnf history info transactionID
transactionID は、トランザクションの ID に置き換えます。
glob 表現を追加して、コマンドの出力をフィルタリングできます。詳細は、dnf
input での glob 表現の指定 を参照してください。
関連情報
-
dnf(8)
の man ページ
9.2. DNF トランザクションの取り消し
RHEL 9 では、次の 2 つの方法で DNF トランザクションを元に戻すことができます。
-
dnf history undo
コマンドを使用して、単一の DNF トランザクションを元に戻します。 -
dnf history rollback
コマンドを使用して、指定されたトランザクションと最後のトランザクションの間に実行されたすべての DNF トランザクションを元に戻します。
dnf history undo
コマンドおよび dnf history rollback
コマンドは注意して使用してください。RHEL パッケージ、特に selinux
、selinux-policy-*
、kernel
、glibc
(gcc
などの glibc
の依存関係) パッケージの古いバージョンへのダウングレードはサポートされていません。したがって、システムを望ましくない状態のままにする可能性があるため、システムをマイナーバージョン (たとえば、RHEL 9.1 から RHEL 9.0 へ) にダウングレードすることは推奨しません。
9.2.1. dnf history undo
を使用して単一の DNF トランザクションを元に戻す
dnf history undo
コマンドを使用して、単一のトランザクション内で実行されたステップを元に戻すことができます。
このトランザクションで新しいパッケージがインストールされた場合は、dnf history undo
がそのパッケージをアンインストールします。トランザクションでパッケージがアンインストールされた場合は、dnf history undo
が再インストールします。また、dnf history undo
コマンドは、古いパッケージが依然として利用可能な場合、更新されたすべてのパッケージを以前のバージョンにダウングレードしようとします。
古いパッケージバージョンが利用できない場合は、dnf history undo
コマンドを使用したダウングレードは失敗します。
dnf history undo
コマンドを使用して単一のトランザクションを元に戻すには、次の手順を実行します。
手順
元に戻すトランザクションの ID を特定します。
# dnf history
オプション: 詳細を表示して、元に戻したいトランザクションであることを確認します。
# dnf history info transaction_id
transaction_id を元に戻したい transaction_id の ID に置き換えます。
トランザクションを元に戻します。
# dnf history undo transaction_id
transaction_id を元に戻したい transaction_id の ID に置き換えます。
例9.1 dnf history undo
コマンドを使用して単一の DNF トランザクションを元に戻す
以下は、dnf history undo
コマンドを使用して unzip
パッケージのインストールトランザクションを元に戻す方法の例です。
unzip
パッケージをインストールします。# dnf install unzip Dependencies resolved. ========================================================================== Package Architecture Version Repository Size ========================================================================== Installing: unzip x86_64 6.0-56.el9 rhel 186 k Transaction Summary ========================================================================== Install 1 Package Total download size: 186 k Installed size: 392 k Is this ok [y/N]: y
元に戻すトランザクション ID を特定します。
# dnf history ID | Command line | Date and time | Action(s) | Altered -------------------------------------------------------------------- 13 | install zip | 2022-11-03 10:49 | Install | 1 12 | install unzip | 2022-11-03 10:49 | Install | 1
トランザクションを元に戻します。
# dnf history undo 12
9.2.2. dnf history rollback
を使用して複数の DNF トランザクションを元に戻す
dnf history rollback
コマンドを使用して、指定したトランザクションと最後のトランザクションの間に実行されたすべての DNF トランザクションを元に戻すことができます。トランザクション ID で指定されたトランザクションは変更されないことに注意してください。
dnf history rollback
コマンドを使用して複数のトランザクションを元に戻すには、次の手順を実行します。
手順
元に戻したい状態のトランザクション ID を特定します。
# dnf history
指定したトランザクションを元に戻す。
# dnf history rollback transaction_id
transaction_id を、元に戻したい状態のトランザクション ID に置き換えます。
または、トランザクション履歴のすべてのトランザクションを元に戻すには、トランザクション ID 1 を使用します。
# dnf history rollback 1
例9.2 dnf history rollback
コマンドを使用して複数の DNF トランザクションを元に戻す
以下は、dnf history rollback
コマンドを使用して unzip
および zip
パッケージの 2 つのインストールトランザクションをロールバックする方法の例です。
unzip
パッケージをインストールします。# dnf install unzip Dependencies resolved. ======================================================================== Package Architecture Version Repository Size ======================================================================== Installing: unzip x86_64 6.0-56.el9 rhel 186 k Transaction Summary ======================================================================== Install 1 Package Total download size: 186 k Installed size: 392 k Is this ok [y/N]: y
wget
パッケージをインストールします。# dnf install wget Dependencies resolved. ======================================================================== Package Architecture Version Repository Size ======================================================================== Installing: wget x86_64 1.21.1-7.el9 rhel 794 k Transaction Summary ======================================================================== Install 1 Package Total download size: 794 k Installed size: 3.1 M Is this ok [y/N]: y
元に戻したい状態のトランザクション ID を特定します。
# dnf history ID | Command line | Date and time | Action(s) | Altered ------------------------------------------------------------------ 14 | install wget | 2022-11-03 10:49 | Install | 1 13 | install unzip | 2022-11-03 10:49 | Install | 1 12 | install vim-X11 | 2022-11-03 10:20 | Install | 171 EE
最後の 2 つのトランザクションを元に戻します。
# dnf history rollback 12
このアクションにより、
wget
パッケージおよびunzip
パッケージはアンインストールされますが、vim-X11
パッケージはインストールされたままになります。
9.3. トランザクションの繰り返し
dnf history redo
コマンドを使用して、トランザクション中に実行された手順を繰り返すことができます。
選択したトランザクションまたは最後の DNF トランザクションを繰り返すには、次の手順を実行します。
手順
特定のトランザクションを繰り返すには、以下を使用します。
# dnf history redo transactionID
transactionID は、トランザクションの ID に置き換えます。
最後のトランザクションを繰り返すには、以下を使用します。
# dnf history redo last
第10章 カスタムソフトウェアリポジトリーの管理
/etc/dnf/dnf.conf
ファイルまたは /etc/yum.repos.d/
ディレクトリーの .repo
ファイルでリポジトリーを設定できます。
DNF および関連ユーティリティーの設定情報は、/etc/dnf/dnf.conf
ファイルに保存されます。このファイルには [main]
セクションが含まれており、リポジトリー固有のオプションを設定できる 1 つ以上の [repository]
セクションを含めることができます。/etc/dnf/dnf.conf
ファイルーの各 [repository]
セクションで定義した値は、[main]
セクションで設定した値を上書きすることに注意してください。
ただし、/etc/yum.repos.d/
ディレクトリーにある、新規または既存の .repo
ファイルに個々のリポジトリーを定義することが推奨されます。
以下のセクションでは、DNF を使用してカスタムソフトウェアリポジトリーを管理する方法を説明します。
10.1. DNF リポジトリーオプションの設定
/etc/dnf/dnf.conf
設定ファイルには、[repository]
セクションが含まれます。リポジトリー は一意のリポジトリー ID です。[repository]
セクションでは、個別のDNF リポジトリーを定義できます。
競合を回避するために、カスタムリポジトリーには Red Hat リポジトリーで使用される名前を指定しないでください。
利用可能な [repository]
オプションの完全なリストは、dnf.conf(5)
man ページの [repository] OPTIONS
セクションを参照してください。
10.2. DNF リポジトリーの追加
新しいリポジトリーを定義するには、以下のいずれかの方法を使用します。
-
[repository]
セクションを/etc/dnf/dnf.conf
ファイルに追加します。 /etc/yum.repos.d/
ディレクトリーの.repo
ファイルに[repository]
セクションを追加します。インストールされた RPM またはソフトウェア管理ツール (Subscription Manager など) は、独自の
.repo
ファイルを提供できます。
このディレクトリー内の、.repo
ファイル拡張子を持つすべてのファイルが dnf
により読み込まれるためリポジトリーは、/etc/dnf/dnf.conf
ではなく .repo
ファイルに定義してください。
dnf config-manager
コマンドを使用してシステムに DNF リポジトリーを追加するには、次の手順を実行します。
手順
システムにリポジトリーを追加します。
# dnf config-manager --add-repo repository_URL
repository_url は、リポジトリーを参照する URL に置き換えます。
ソフトウェアパッケージを、Red Hat の認証ベース Content Delivery Network
(CDN) 以外の未検証または信頼できないソースから取得してインストールする場合には、セキュリティー上のリスクが伴います。セキュリティー、安定性、互換性、保全性に関する問題につながる恐れがあります。
10.3. DNF リポジトリーの有効化
dnf config-manager
コマンドを使用して、システムに追加された DNF リポジトリーを有効にするには、次の手順を実行します。
手順
リポジトリーを有効にします。
# dnf config-manager --enable repositoryID
repositoryID は、一意のリポジトリー ID に置き換えます。
関連情報
10.4. DNF リポジトリーの無効化
dnf config-manager
コマンドを使用して、システムに追加された DNF リポジトリーを無効にするには、次の手順を実行します。
手順
リポジトリーを無効にします。
# dnf config-manager --disable repositoryID
repositoryID は、一意のリポジトリー ID に置き換えます。
関連情報
第11章 Application Streams のコンテンツのバージョンの管理
AppStream リポジトリーのコンテンツは、モジュールストリームに対応する複数のバージョンが使用できます。
以下のセクションでは、既存の有効なモジュールストリームを変更するときに実行する必要がある操作について説明します。
11.1. モジュールの依存関係とストリームの変更
これまで、コンテンツを提供するパッケージは他のパッケージに依存し、通常は使用する依存関係バージョンを指定していました。モジュールに含まれるパッケージにもこの仕組みが適用されますが、パッケージとその特定バージョンをモジュールとストリームとしてグループ化したことで、さらに制限されます。また、モジュールストリームは含まれるパッケージや提供するパッケージに制限されずに、その他のモジュールのストリームへの依存関係を宣言できます。
パッケージやモジュールを操作した後は、インストールされているすべてのパッケージの依存関係ツリー全体が、パッケージが宣言しているすべての条件を満たさなければなりません。また、すべてのモジュールストリームの依存関係に適合する必要があります。
その結果、以下のことが言えます。
- あるモジュールストリームを有効にすると、さらに別のモジュールストリームの有効化が必要になる場合があります。
- モジュールストリームプロファイルをインストールしたり、ストリームからパッケージをインストールするには、追加のモジュールストリームを有効にしたり、追加のパッケージをインストールしたりする必要がある場合もあります。
- あるモジュールストリームを無効にすると、他のモジュールストリームも無効にしなければならない場合があります。自動的に削除されるパッケージはありません。
- パッケージの削除には、他のパッケージの削除が必要になることがあります。このようなパッケージがモジュールにより提供されている場合は、このモジュールストリームのパッケージがインストールされなくなっても、将来のインストールに備えてモジュールストリームは有効のままになります。これは、未使用の DNF リポジトリーの挙動を反映しています。
11.2. モジュールおよび非モジュールの依存関係のやり取り
モジュールの依存関係 は、通常の RPM 依存関係の上の追加レイヤーです。モジュール依存関係の機能は、リポジトリー間で仮想的な依存関係と同様になります。つまり、異なるパッケージをインストールするには、RPM の依存関係と、モジュールの依存関係の両方を解決する必要があります。
変更が明示的に指示される場合を除き、システムは常にモジュールとストリームの選択を保持します。モジュールパッケージは、このパッケージを提供するモジュールの、現在有効なストリームに含まれる更新を受け取りますが、別のストリームに含まれたバージョンへのアップグレードは行いません。
11.3. モジュールストリームのリセット
モジュールをリセットすると、そのストリームをすべて (有効でも無効でもない) 初期状態にリセットします。モジュールに設定したデフォルトストリームがある場合は、モジュールをリセットするとそのストリームがアクティブになります。
dnf module reset
コマンドを使用してモジュールストリームを初期状態にリセットするには、次の手順を実行します。
手順
モジュールストリームをリセットにします。
# dnf module reset module-name
モジュールは初期状態に戻ります。有効なストリームとインストールされたプロファイルに関する情報は消去されますが、インストールされたコンテンツは削除されません。
11.4. モジュールのストリームをすべて無効化
デフォルトストリームを持つモジュールは、常に 1 つのストリームがアクティブになります。すべてのモジュールストリームのコンテンツにアクセスしてはならない場合は、モジュール全体を無効にすることができます。
dnf module disable
コマンドを使用してモジュールのすべてのストリームを無効にするには、次の手順を実行します。
前提条件
- アクティブモジュールストリーム の概念 を理解している。
手順
モジュールを無効にします。
# dnf module disable module-name
dnf
コマンドにより確認が求められた後に、モジュールとそのすべてのストリームが無効になります。すべてのモジュールが非アクティブになります。インストール済みのコンテンツは削除されません。
11.5. 後のストリームへの切り替え
後のモジュールストリームに切り替えると、それぞれのパッケージがすべて後のバージョンに置き換えられます。
データをバックアップし、コンポーネントに固有の移行手順に従ってください。
前提条件
- システムが完全に更新されている。
手順
インストールされているコンポーネントを新しいバージョンに切り替え、モジュール (コンポーネント) とストリーム (バージョン) を選択します。
# dnf module switch-to module:stream
オプション: インストールされているコンポーネントを新しいバージョンに切り替えます。インストールまたは更新するプロファイルも選択します。
# dnf module switch-to module:stream/profile
例11.1 非モジュラーコンテンツからモジュールストリームへの切り替え
以下は、非モジュラー PHP 8.0 からモジュラー PHP 8.1 に切り替える方法の例です。
この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。
PHP 8.0 の
php-common
パッケージがインストールされていることを確認します。$ rpm -q php-common php-common-8.0.27-1.el9_1.x86_64
非モジュラー PHP 8.0 からモジュラー PHP 8.1 に切り替えます。
# dnf module switch-to php:8.1 ... Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Upgrading: php-common x86_64 8.1.14-1.module+el9.2.0+17911+b059dfc2 rhel-AppStream 687 k Enabling module streams: php 8.1 Transaction Summary ======================================================================================== Upgrade 1 Package Total download size: 687 k Is this ok [y/N]: y Downloading Packages: ... Upgraded: php-common-8.1.14-1.module+el9.2.0+17911+b059dfc2.x86_64 Complete!
php:8.1
モジュールストリームが有効になっていることを確認します。$ dnf module list php ... rhel-AppStream Name Stream Profiles Summary php 8.1 [e] common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
インストールされている
php-common
パッケージのバージョンを確認します。$ rpm -q php-common php-common-8.1.14-1.module+el9.2.0+17911+b059dfc2.x86_64
例11.2 前のモジュールストリームから後のモジュールストリームへの切り替え
以下は、nodejs:18
モジュールストリームから nodejs:20
ストリームに切り替える方法の例です。
この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。
nodejs:18
モジュールストリームがインストールされていることを確認します。$ dnf module list nodejs ... rhel-AppStream Name Stream Profiles Summary nodejs 18 [e] common [d] [i], development, minimal, s2i Javascript runtime nodejs 20 common [d], development, minimal, s2i Javascript runtime Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
後の
nodejs:20
モジュールストリームに切り替えます。# dnf module switch-to nodejs:20 ... Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Upgrading: nodejs x86_64 1:20.5.1-1.module+el9.3.0+19646+9a702805 rhel-AppStream 14 M nodejs-docs noarch 1:20.5.1-1.module+el9.3.0+19646+9a702805 rhel-AppStream 8.0 M nodejs-full-i18n x86_64 1:20.5.1-1.module+el9.3.0+19646+9a702805 rhel-AppStream 8.5 M npm x86_64 1:9.8.0-1.20.5.1.1.module+el9.3.0+19646+9a702805 rhel-AppStream 2.6 M Switching module streams: nodejs 18 -> 20 Transaction Summary ======================================================================================== Upgrade 4 Packages Total download size: 33 M Is this ok [y/N]: y Downloading Packages: ... Upgraded: nodejs-1:20.5.1-1.module+el9.3.0+19646+9a702805.x86_64 nodejs-docs-1:20.5.1-1.module+el9.3.0+19646+9a702805.noarch nodejs-full-i18n-1:20.5.1-1.module+el9.3.0+19646+9a702805.x86_64 npm-1:9.8.0-1.20.5.1.1.module+el9.3.0+19646+9a702805.x86_64 Complete!
nodejs:20
モジュールストリームが有効になっていることを確認します。$ dnf module list nodejs ... rhel-AppStream Name Stream Profiles Summary nodejs 18 common [d], development, minimal, s2i Javascript runtime nodejs 20 [e] common [d] [i], development, minimal, s2i Javascript runtime Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
インストールされている
nodejs
のバージョンを確認します。$ rpm -q nodejs nodejs-20.5.1-1.module+el9.3.0+19646+9a702805.x86_64
付録A DNF コマンドリスト
以下のセクションでは、Red Hat Enterprise Linux 9 のコンテンツを一覧表示、インストール、および削除するための DNF コマンドを説明します。
A.1. RHEL 9 でコンテンツをリスト表示するコマンド
以下は、Red Hat Enterprise Linux 9 でコンテンツとその詳細を検索するために一般的に使用される DNF コマンドです。
コマンド | 説明 |
---|---|
| パッケージに関連する用語を使用してパッケージを検索します。 |
| 選択したパッケージとそのバージョンの有効な DNF リポジトリーを検索します。 |
| インストール済みおよび利用可能なすべてのパッケージに関する情報を一覧表示します。 |
| システムにインストールされているパッケージを一覧表示します。 |
| インストール可能な有効なリポジトリーにある、すべてのパッケージを一覧表示します。 |
| システムで有効なリポジトリーを一覧表示します。 |
| システムで無効になっているリポジトリーを一覧表示します。 |
| 有効および無効の両方のリポジトリーを一覧表示します。 |
| リポジトリーの追加情報を一覧表示します。 |
| 利用可能なパッケージの詳細を表示します。 |
| システムにインストールされているパッケージの詳細を表示します。 |
| モジュールとその現在の状態を一覧表示します。 |
| モジュールの詳細を表示します。 |
| モジュールの現在の状態を表示します。 |
| 選択したモジュールの利用可能なプロファイルに関連付けられたパッケージを表示します。 |
| 指定されたストリームを使用して、モジュールの利用可能なプロファイルに関連付けられたパッケージを表示します。 |
| パッケージを提供するモジュール、ストリーム、およびプロファイルを特定します。 なお、パッケージがどのモジュールからも利用できない場合は、このコマンドの出力は空になります。 |
| インストールされているグループと利用可能なグループの数を表示します。 |
| インストール済みおよび利用可能なグループを一覧表示します。 |
| 特定のグループに含まれる必須および任意のパッケージを一覧表示します。 |
A.2. RHEL 9 にコンテンツをインストールするコマンド
以下は、Red Hat Enterprise Linux 9 にコンテンツをインストールするために一般的に使用される DNF コマンドです。
コマンド | 説明 |
---|---|
| パッケージのインストール
モジュールストリームによりパッケージが提供される場合は、 |
| 複数のパッケージとその依存関係を同時にインストールします。 |
| multilib システム (AMD64、Intel 64 マシン) にパッケージをインストールするときに、パッケージ名に追加してパッケージのアーキテクチャーを指定します。 |
| バイナリーへのパスを引数として使用して、バイナリーをインストールします。 |
| ダウンロード済みのパッケージをローカルディレクトリーからインストールします。 |
| パッケージ URL を使用してリモートパッケージをインストールします。 |
| 特定のストリームを使用してモジュールを有効にします。 このコマンドを実行しても RPM パッケージはインストールされないことに注意してください。 |
| 特定のモジュールストリームからデフォルトのプロファイルをインストールします。 このコマンドを実行すると、指定したストリームも有効になっていることに注意してください。 |
| 特定のストリームを使用して、選択したプロファイルをインストールします。 |
| グループ名でパッケージグループをインストールします。 |
| groupID でパッケージグループをインストールします。 |
A.3. RHEL 9 でコンテンツを削除するコマンド
以下は、Red Hat Enterprise Linux 9 でコンテンツを削除するために一般的に使用される DNF コマンドです。
コマンド | 説明 |
---|---|
| 特定のパッケージとすべての依存パッケージを削除します。 |
| 複数のパッケージと、その未使用の依存関係を同時に削除します。 |
| グループ名でパッケージグループを削除します。 |
| groupID でパッケージグループを削除します。 |
| 指定されたストリームからすべてのパッケージを削除します。 このコマンドを実行すると、システムから重要なパッケージが削除される可能性があることに注意してください。 |
| インストール済みプロファイルからのパッケージを削除します。 |
| 指定したストリーム内のすべてのインストール済みプロファイルからのパッケージを削除します。 |
| モジュールを初期状態へのリセット このコマンドを実行しても、指定したモジュールからパッケージが削除されないことに注意してください。 |
| モジュールおよびそのストリームの無効化 このコマンドを実行しても、指定したモジュールからパッケージが削除されないことに注意してください。 |