DNF ツールを使用したソフトウェアの管理

Red Hat Enterprise Linux 9

DNF ソフトウェア管理ツールを使用した RPM リポジトリー内のコンテンツの管理

Red Hat Customer Content Services

概要

DNF ツールを使用して、RPM リポジトリーを通じて配布されたコンテンツを検索、インストール、利用します。パッケージ、モジュール、ストリーム、プロファイルの操作方法を学びます。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

Jira からのフィードバック送信 (アカウントが必要)

  1. Jira の Web サイトにログインします。
  2. 上部のナビゲーションバーで Create をクリックします。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある 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 を設定する方法を説明します。

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 のリポジトリーの操作方法および処理方法に影響を及ぼします。

手順

  1. /etc/dnf/dnf.conf ファイルを編集します。
  2. 要件に応じて [main] セクションを更新します。
  3. 変更を保存します。

関連情報

  • 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-idsubscription-manager などの特定のプラグインが必要です。それらを無効にすると、Red Hat Enterprise Linux はコンテンツ配信ネットワーク (CDN) からソフトウェアをインストールまたは更新できなくなります。

手順

  • 次のいずれかの方法を使用して、DNF がプラグインを使用する方法を制御します。

    • DNF プラグインのロードをシステム全体で有効または無効にするには、/etc/dnf/dnf.conf ファイルの [main] セクションに plugins パラメーターを追加します。

      • すべての DNF プラグインのロードを有効にするには、plugins=1 (デフォルト) を設定します。
      • すべての DNF プラグインのロードを無効にするには、plugins=0 を設定します。
    • 特定のプラグインを無効にするには、/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. リポジトリーのリスト表示

システムで有効または無効になっているリポジトリーの概要を取得するには、リポジトリーをリスト表示します。

手順

  1. システムで有効になっているすべてのリポジトリーをリスト表示します。

    $ dnf repolist

    特定のリポジトリーのみを表示するには、次のいずれかのオプションをコマンドに追加します。

    • --disabled を追加すると、無効なリポジトリーのみがリストされます。
    • --all を追加すると、有効なリポジトリーと無効なリポジトリーの両方がリストされます。
  2. オプション: リポジトリーの追加情報をリストします。

    $ 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 回の手順でインストールできます。ただし、インストールする前に、必要なパッケージグループの名前を特定する必要があります。

手順

  1. インストールされているグループと使用可能なグループの両方をリストします。

    $ dnf group list

    dnf group list コマンドに --installed および --available オプションを追加すると、結果をフィルタリングできます。--hidden オプションを使用すると、出力に非表示のグループを表示できます。

  2. 特定のグループに含まれる必須、オプション、およびデフォルトのパッケージをリストします。

    $ dnf group info "<group_name>"
    注記

    glob 表現を引数として追加することで、結果をフィルタリングできます。詳細は、DNF 入力での glob 表現の指定 を参照してください。

  3. オプション: インストールされているグループと利用可能なグループの数を表示します。

    $ dnf group summary

4.6. 利用可能なモジュールとその内容の一覧表示

DNF を使用してモジュールを検索し、モジュールに関する情報を表示すると、モジュールをインストールする前に、リポジトリーで使用可能なモジュールを特定し、適切なストリームを選択できます。

手順

  1. 次のいずれかの方法でモジュール情報をリスト表示します。

    • 利用可能なすべてのモジュールをリストします。

      $ 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
      ...
  2. モジュールの詳細をリスト表示するには、次のいずれかの方法を使用します。

    • 説明、すべてのプロファイルのリスト、モジュールが提供するすべてのパッケージのリストなど、モジュールに関するすべての詳細をリストします。

      $ 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> ...

      i686x86_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 がモジュールを提供しています。モジュールを使用して、特定のバージョン (ストリーム) とパッケージのセット (プロファイル) をインストールできます。

手順

  1. インストールするパッケージを提供するモジュールをリスト表示します。

    # 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
  2. モジュールをインストールします。

    # 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 リポジトリーにデフォルトのストリームが定義されていません。ただし、デフォルトのモジュールストリームとデフォルトのモジュールプロファイルを設定できます。設定すると、デフォルトのモジュールのストリームとプロファイルをインストールするときに、その情報を省略できます。

手順

  1. 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 です。

  2. /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 コマンドを使用しているかどうかに関わらず、新しいカーネルを常にインストールします。

第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 タイマーユニットで使用される設定によって上書きされます。

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>

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-download.timer

キャッシュにパッケージをダウンロードし、更新を利用できるようにします。

注記:このタイマーユニットでは更新パッケージはインストールされません。インストールを実行するには、dnf update コマンドを実行する必要があります。

はい

dnf-automatic-install.timer

更新したパッケージをダウンロードしてインストールします。

はい

dnf-automatic-notifyonly.timer

リポジトリーデータのみをダウンロードして、リポジトリーキャッシュを最新の状態に保ち、利用可能な更新を通知します。

注記:このタイマーユニットでは、更新されたパッケージはダウンロードまたはインストールされません。

はい

dnf-automatic.timer

更新のダウンロードおよび適用時のこのタイマーの動作は、/etc/dnf/automatic.conf 設定ファイルの設定により指定されます。

デフォルトの挙動は、dnf-automatic-download.timer ユニットと同じで、パッケージをダウンロードしますが、インストールは行いません。

いいえ

関連情報

第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 を使用してデフォルトプロファイルとしてインストールされている。
  • モジュールの依存関係の解決 を理解している。

手順

  1. 選択したプロファイルに属するパッケージをアンインストールします。

    # dnf module remove module-name:stream/profile

    module-namestream、および profile を、アンインストールするモジュール、ストリーム、およびプロファイルに置き換えます。

    または、ストリームにインストールされているすべてのプロファイルからパッケージをアンインストールします。

    # dnf module remove module-name:stream

    この操作は、プロファイルに属さないパッケージをストリームから削除しません。

  2. 削除トランザクションに進む前に、Removing: および Removing unused dependencies: にあるパッケージのリストを確認してください。

選択したストリームからすべてのパッケージを削除するには、セクション 8.3.2 モジュールストリームから全パッケージを削除 の手順に従います。

例8.1 選択したプロファイルからパッケージを削除

以下は、nodejs:18 モジュールストリームの development プロファイルに属するパッケージとその依存関係を削除する方法の例です。

注記

この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。

  1. 使用可能なすべてのプロファイルを含む 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!
  2. インストールされたプロファイルを検査します。

    $ 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

    出力に示されているように、すべてのプロファイルがインストールされます。

  3. 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
  4. 削除後にインストールされたプロファイルを検査します。

    $ 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. モジュールストリームから全パッケージを削除

モジュールストリームでインストールしたパッケージを削除すると、そのストリームによりインストールされたパッケージに対応する名前を持つパッケージがすべて削除されます。これには、その依存関係も含まれます。ただし、その他のモジュールで必要なパッケージは除外されます。

選択したモジュールストリームからのパッケージをすべて削除するには、次の手順を実行します。

前提条件

  • モジュールストリームが有効になり、少なくともいくつかのパッケージがストリームからインストールされている。
  • モジュールの依存関係の解決 を理解している。

手順

  1. 選択したストリームからパッケージをすべて削除します。

    # dnf module remove --all module-name:stream

    module-name および stream を、アンインストールするモジュールおよびストリームに置き換えます。

  2. 削除トランザクションに進む前に、Removing: および Removing unused dependencies: にあるパッケージのリストを確認してください。
  3. 必要に応じて、ストリームをリセットまたは無効にします。

選択したプロファイルからパッケージのみを削除する場合は、セクション 8.3.1.インストール済みプロファイルからのパッケージの削除 の手順を行います。

例8.2 ストリーム全体からパッケージを削除

以下は、nodejs:18 モジュールストリームからのパッケージをすべて削除する方法の例です。

注記

この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。

  1. 使用可能なすべてのプロファイルを含む 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
  2. 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
  3. 削除後に 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 コマンドを使用してパッケージ管理履歴を処理する方法を説明します。

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 パッケージ、特に selinuxselinux-policy-*kernelglibc (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 コマンドを使用して単一のトランザクションを元に戻すには、次の手順を実行します。

手順

  1. 元に戻すトランザクションの ID を特定します。

    # dnf history
  2. オプション: 詳細を表示して、元に戻したいトランザクションであることを確認します。

    # dnf history info transaction_id

    transaction_id を元に戻したい transaction_id の ID に置き換えます。

  3. トランザクションを元に戻します。

    # dnf history undo transaction_id

    transaction_id を元に戻したい transaction_id の ID に置き換えます。

例9.1 dnf history undo コマンドを使用して単一の DNF トランザクションを元に戻す

以下は、dnf history undo コマンドを使用して unzip パッケージのインストールトランザクションを元に戻す方法の例です。

  1. 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
  2. 元に戻すトランザクション 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
  3. トランザクションを元に戻します。

    # dnf history undo 12

9.2.2. dnf history rollback を使用して複数の DNF トランザクションを元に戻す

dnf history rollback コマンドを使用して、指定したトランザクションと最後のトランザクションの間に実行されたすべての DNF トランザクションを元に戻すことができます。トランザクション ID で指定されたトランザクションは変更されないことに注意してください。

dnf history rollback コマンドを使用して複数のトランザクションを元に戻すには、次の手順を実行します。

手順

  1. 元に戻したい状態のトランザクション ID を特定します。

    # dnf history
  2. 指定したトランザクションを元に戻す。

    # 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 つのインストールトランザクションをロールバックする方法の例です。

  1. 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
  2. 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
  3. 元に戻したい状態のトランザクション 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
  4. 最後の 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 に切り替える方法の例です。

注記

この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。

  1. PHP 8.0php-common パッケージがインストールされていることを確認します。

    $ rpm -q php-common
    php-common-8.0.27-1.el9_1.x86_64
  2. 非モジュラー 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!
  3. 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
  4. インストールされている 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 ストリームに切り替える方法の例です。

注記

この例では、見やすくするために出力が編集されています。実際の出力には、ここに示すよりも多くの情報が含まれる場合があります。

  1. 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
  2. 後の 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!
  3. 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
  4. インストールされている 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 search term

パッケージに関連する用語を使用してパッケージを検索します。

dnf repoquery package

選択したパッケージとそのバージョンの有効な DNF リポジトリーを検索します。

dnf list

インストール済みおよび利用可能なすべてのパッケージに関する情報を一覧表示します。

dnf list --installed

dnf repoquery --installed

システムにインストールされているパッケージを一覧表示します。

dnf list --available

dnf repoquery

インストール可能な有効なリポジトリーにある、すべてのパッケージを一覧表示します。

dnf repolist

システムで有効なリポジトリーを一覧表示します。

dnf repolist --disabled

システムで無効になっているリポジトリーを一覧表示します。

dnf repolist --all

有効および無効の両方のリポジトリーを一覧表示します。

dnf repoinfo

リポジトリーの追加情報を一覧表示します。

dnf info package-name

dnf repoquery --info package_name

利用可能なパッケージの詳細を表示します。

dnf repoquery --info --installed package_name

システムにインストールされているパッケージの詳細を表示します。

dnf module list

モジュールとその現在の状態を一覧表示します。

dnf module info module-name

モジュールの詳細を表示します。

dnf module list module-name

モジュールの現在の状態を表示します。

dnf module info --profile module-name

選択したモジュールの利用可能なプロファイルに関連付けられたパッケージを表示します。

dnf module info --profile module-name:stream

指定されたストリームを使用して、モジュールの利用可能なプロファイルに関連付けられたパッケージを表示します。

dnf module provides package

パッケージを提供するモジュール、ストリーム、およびプロファイルを特定します。

なお、パッケージがどのモジュールからも利用できない場合は、このコマンドの出力は空になります。

dnf group summary

インストールされているグループと利用可能なグループの数を表示します。

dnf group list

インストール済みおよび利用可能なグループを一覧表示します。

dnf group info group-name

特定のグループに含まれる必須および任意のパッケージを一覧表示します。

A.2. RHEL 9 にコンテンツをインストールするコマンド

以下は、Red Hat Enterprise Linux 9 にコンテンツをインストールするために一般的に使用される DNF コマンドです。

コマンド説明

dnf install package-name

パッケージのインストール

モジュールストリームによりパッケージが提供される場合は、dnf が必要なモジュールストリームを解決し、このパッケージのインストール時に自動的に有効になります。これは、すべてのパッケージ依存関係で再帰的に行われます。より多くのモジュールストリームがこの要件を満たす必要がある場合は、デフォルトのモジュールストリームが使用されます。

dnf install package-name-1 package-name-2

複数のパッケージとその依存関係を同時にインストールします。

dnf install package-name.arch

multilib システム (AMD64、Intel 64 マシン) にパッケージをインストールするときに、パッケージ名に追加してパッケージのアーキテクチャーを指定します。

dnf install /usr/sbin/binary-file

バイナリーへのパスを引数として使用して、バイナリーをインストールします。

dnf install /path/

ダウンロード済みのパッケージをローカルディレクトリーからインストールします。

dnf install package-url

パッケージ URL を使用してリモートパッケージをインストールします。

dnf module enable module-name:stream

特定のストリームを使用してモジュールを有効にします。

このコマンドを実行しても RPM パッケージはインストールされないことに注意してください。

dnf module install module-name:stream

dnf install @module-name:stream

特定のモジュールストリームからデフォルトのプロファイルをインストールします。

このコマンドを実行すると、指定したストリームも有効になっていることに注意してください。

dnf module install module-name:stream/profile

dnf install @module-name:stream/profile

特定のストリームを使用して、選択したプロファイルをインストールします。

dnf group install group-name

グループ名でパッケージグループをインストールします。

dnf group install groupID

groupID でパッケージグループをインストールします。

A.3. RHEL 9 でコンテンツを削除するコマンド

以下は、Red Hat Enterprise Linux 9 でコンテンツを削除するために一般的に使用される DNF コマンドです。

コマンド説明

dnf remove package-name

特定のパッケージとすべての依存パッケージを削除します。

dnf remove package-name-1 package-name-2

複数のパッケージと、その未使用の依存関係を同時に削除します。

dnf group remove group-name

グループ名でパッケージグループを削除します。

dnf group remove groupID

groupID でパッケージグループを削除します。

dnf module remove --all module-name:stream

指定されたストリームからすべてのパッケージを削除します。

このコマンドを実行すると、システムから重要なパッケージが削除される可能性があることに注意してください。

dnf module remove module-name:stream/profile

インストール済みプロファイルからのパッケージを削除します。

dnf module remove module-name:stream

指定したストリーム内のすべてのインストール済みプロファイルからのパッケージを削除します。

dnf module reset module-name

モジュールを初期状態へのリセット

このコマンドを実行しても、指定したモジュールからパッケージが削除されないことに注意してください。

dnf module disable module-name

モジュールおよびそのストリームの無効化

このコマンドを実行しても、指定したモジュールからパッケージが削除されないことに注意してください。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.