第2章 yum を使用したソフトウェアのインストール

2.1. Red Hat Enterprise Linux 8 におけるソフトウェアのインストールの概要

Red Hat Enterprise Linux 8 では、ソフトウェアのインストールは、新しいバージョンの YUM ツールで行います。これは、DNF テクノロジーに基づいています。

YUM ベースの DNF には、Red Hat Enterprise Linux 7 で使用されている以前の YUM v3 に比べて、以下の点が優れています。

  • パフォーマンスの向上
  • 利用できる新機能。モジュール式のコンテンツを管理するために最も重要なサポート
  • ツーリングと統合するために適切に設計され、安定した API

新しい YUM ツールと、以前のバージョンである Red Hat Enterprise Linux 7 の YUM v3 の詳細な相違点は、『Changes in DNF CLI compared to YUM』 を参照してください。

注記

このツールは、アップストリームでは、DNF と呼ばれています。そのため、Red Hat Enterprise Linux 8 の新しい YUM ツールが返す出力結果には DNF と書かれており、アップストリームのドキュメントでは、これが DNF とみなされます。

ソフトウェアをインストールするには、Red Hat Enterprise Linux 7 と同じ yum コマンドとオプションを使用できます。

選択した yum プラグインとユーティリティーは、新しい DNF バックエンドに移植されており、Red Hat Enterprise Linux 7 と同じ名前でインストールできます。また、互換性のシンボリックリンクが提供されているため、バイナリー、設定ファイル、およびディレクトリーは通常の場所で確認できます。

YUM v3 が提供するレガシーの Python API は利用できなくなりました。代わりに、使用しているプラグインおよびスクリプトを、安定し、完全に対応している、新しい DNF Python API に移行することが推奨されます。DNF Python APIhttps://dnf.readthedocs.io/en/latest/api.html から利用できます。

また、Red Hat Enterprise Linux 8 では、新しい Libdnf API である Libdnf C API および Libdnf Python API が利用できます。新しい Libdnf API は現在安定していないため、おそらく Red Hat Enterprise Linux 8 ライフサイクル中に変更します。

2.2. yum 機能の概要

yum は、Red Hat のパッケージマネージャーです。yum を使用すれば、利用可能なパッケージ情報に関するクエリー、リポジトリーからのパッケージのフェッチ、パッケージのインストールおよびアンインストール、さらには利用可能な最新バージョンへのシステム全体の更新が可能です。yum は、パッケージの更新、インストール、削除を実行しているパッケージで依存関係の自動解決を行います。そのため、利用可能なすべての依存パッケージを自動的に決定、フェッチ、インストールできます。

yum は、新たに追加されたリポジトリー、または パッケージソース で設定でき、その機能を強化または拡張するプラグインを多数提供します。yum を使用すれば、パッケージ管理が簡単に行えます。

重要

yum は、すべてのパッケージリポジトリー (パッケージソース)、または個々のリポジトリーに対して有効になっている GPG 署名のパッケージにおける署名検証である Gnu Privacy Guard (GPG) (GnuPG とも呼ばれる) を有効にすることで、安全なパッケージ管理を提供します。

yum を使用すると、他のマシンへダウンロードし、インストールを行う RPM パッケージでリポジトリーを設定できます。可能な場合、yum は複数のパッケージおよびメタデータの 並行ダウンロード を使用して、ダウンロードのスピードを高めます。

注記

yum を使用して、システムへのパッケージのインストール、アップデート、または削除を行うにはスーパーユーザー権限が必要になります。ここに示す例では、su コマンドまたは sudo コマンドのいずれかを使用して、すでにスーパーユーザー権限を取得していることが前提となります。

2.3. 特定のタスクに yum の使用

以下のセクションは、yum を使用して特定のタスクを行う方法を説明します。

2.3.1. パッケージの確認と更新

yum を使用すると、お使いのシステムに適用される更新があるかどうかをチェックできます。更新が必要なパッケージを一覧表示してこれらを一度に更新したり、パッケージを個別に選択して更新したりできます。

2.3.1.1. 更新の確認

使用しているシステムに利用可能な更新があるインストール済みのパッケージを確認するには、以下のコマンドを実行します。

yum check-update

このコマンドは、更新が利用可能なパッケージおよびその依存関係の一覧を表示します。各パッケージの出力には、以下が含まれます。

  • パッケージの名前
  • パッケージがどの CPU アーキテクチャーを対象としてビルドされたか
  • インストールする更新パッケージのバージョン
  • 更新パッケージのリリース
  • ビルドバージョン (z-stream 更新として追加)
  • 更新パッケージが置かれているリポジトリー
2.3.1.1.1. パッケージの更新

1 回に更新するパッケージ数を 1 つ、複数、または全てのパッケージから選択できます。更新するパッケージの依存関係またはパッケージに利用可能な更新がある場合は、併せて更新されます。

2.3.1.1.1.1. 単一パッケージの更新

1 つのパッケージを更新するには、root で以下のコマンドを実行します。

yum update package_name
重要

yum は、 yum update コマンドまたは yum install コマンドを使用してカーネルの更新を適用しているかどうかに関わらず、新しいカーネルを常に インストール します。

一方、RPM を使用する場合は、現在のカーネルを 置き換える rpm -u kernel ではなく、新しいカーネルをインストールする rpm -i kernel コマンドを使用することが重要です。

2.3.1.1.1.2. パッケージグループの更新

パッケージグループを更新するには、root で以下のコマンドを実行します。

yum group update group_name

ここでは、group_name を、更新するパッケージグループに置き換えます。パッケージグループの詳細は 「パッケージグループでの作業」 を参照してください。

2.3.1.1.2. すべてのパッケージとその依存関係の更新

パッケージとその依存関係をすべて更新するには、引数なしで yum update コマンドを実行します。

yum update

2.3.2. パッケージでの作業

yum では、パッケージの検索、パッケージ情報の表示、パッケージのインストールおよび削除など、ソフトウェアパッケージの完全な操作が可能です。

2.3.2.1. パッケージの検索

以下のコマンドを使用すると、全パッケージの名前、詳細、サマリーを検索できます。

yum search term...

term を、検索するパッケージ名に置き換えます。

yum search コマンドは、パッケージ名は分からないものの、関連用語を知っている場合にパッケージを検索する際に役立ちます。デフォルトでは、yum search はパッケージ名とサマリーを返すため、検索には時間がかかりません。詳細情報を検索する場合は yum search all を使用しますが、この場合は時間がかかります。

2.3.2.1.1. 結果のフィルタリング

yum の全 list コマンドでは、1 つ以上の glob 表現 を引数として追加することで、結果をフィルタリングできます。glob 表現は、1 つ以上のワイルドカード文字 * (任意の文字サブセットに拡張) および ? (任意の 1 文字に拡張) を含む通常の文字列です。

yum コマンドに glob 表現を引数として渡す場合には、glob 表現をエスケープする点に注意してください。これを行わないと、bash シェルはこの表現を パス名の展開 と解釈してしまい、glob と適合する現在のディレクトリーの全ファイルを yum に渡す可能性があります。確実に glob 表現を yum に渡すには、以下のいずれかの方法で行います。

  • ワイルドカード文字の前にバックスラッシュ記号を入力して、ワイルドカード文字をエスケープする
  • glob 表現全体を二重引用符または単一引用符でくくる

2.3.2.2. パッケージの一覧表示

インストール済み および 利用可能なパッケージに関する情報を一覧表示するには、シェルプロンプトで次のコマンドを実行します。

yum list all

glob 表現に一致するインストール済み および 利用可能なパッケージを一覧表示するには、以下のコマンドを使用します。

yum list glob_expression...

installed キーワードを使用して、システムにインストールされているパッケージを一覧表示するには、以下のコマンドを使用します。

yum list installed glob_expression...

有効なすべてのリポジトリーでインストール可能なパッケージを一覧表示するには、以下の形式のコマンドを使用します。

yum list available glob_expression...
2.3.2.2.1. リポジトリーの一覧表示

リポジトリーの ID、名前、お使いのシステムで 有効な 各リポジトリーのパッケージ数を一覧表示するには、以下のコマンドを実行します。

yum repolist

このようなリポジトリーの詳細情報を一覧表示するには、repoinfo コマンドを使用します。このコマンドを使用すると、一覧表示した各リポジトリーのファイル名、全体のサイズ、最終更新日、URL などの情報が表示されます。

yum repoinfo

有効および無効なリポジトリーの両方を表示するには、以下のコマンドを使用します。ステータスのコラムが出力リストに追加され、どのリポジトリーが有効になっているかが分かります。

yum repolist all

最初の引数を disabled にすることで、コマンドの出力を無効なリポジトリーに制限できます。また、リポジトリーの ID、名前、関連する glob 表現を引数として指定することもできます。引数と完全に一致するリポジトリー ID または名前がある場合は、enabled フィルターまたは disabled フィルターを通過しないリポジトリーであっても表示されることに注意してください。

2.3.2.2.2. パッケージ情報の表示

1 つ以上のパッケージに関する情報を表示するには、以下のコマンドを実行します (ここでは glob 表現も有効)。

yum info package_name...

package_name を、パッケージ名に置き換えます。

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

1 つのパッケージと、そのパッケージでインストールされていない依存関係をすべてインストールするには、root で、以下の形式のコマンドを入力します。

yum install package_name

複数パッケージを同時にインストールするには、その名前を引数として追加します。root で以下を実行します。

yum install package_name package_name...

AMD64 マシンや Intel 64 マシンなどの multilib システムにパッケージをインストールする場合は、パッケージ名に .arch を追加して、パッケージのアーキテクチャーを指定できます (ただし、有効なリポジトリーで利用可能な場合のみ)。

yum install package_name.arch

glob 表現を使用すると、名前が似ている複数のパッケージを迅速にインストールできます。root で以下のコマンドを実行します。

yum install glob_expression...

パッケージ名と glob 表現に加えて、yum install にはファイル名も追加できます。インストールするバイナリー名が分かっていて、パッケージ名が分からない場合は、yum install にパス名を付けて実行します。root で以下を実行します。

yum install /usr/sbin/named

yum はパッケージ一覧で検索を行い、/usr/sbin/named を提供するパッケージを探します。パッケージが存在すると、そのパッケージをインストールするかどうかを yum が確認します。

上記の例で分かるように、yum install コマンドは厳密に定義された引数を必要としません。さまざまな形式のパッケージ名や glob 表現を処理できるため、ユーザーによるインストールを容易にします。一方で、yum が入力を正確に分析するにはしばらく時間がかかります。指定するパッケージの数が多くなれば、それだけ時間がかかります。したがって、パッケージ検索を最適化するために、以下のコマンドを使用して引数の分析方法を明示的に定義できます。

yum install-n name
yum install-na name.architecture
yum install-nevra name-epoch:version-release.architecture

yum は、install-n コマンドでは name をパッケージの正確な名前として解釈します。また、install-na コマンドでは、後続の引数で、ピリオドを使用してパッケージ名とアーキテクチャーを指定し、install-nevra では、name-epoch:version-release.architecture の形で引数を指定していると yum は解釈します。同様に、削除するパッケージを検索する際に、yum remove-nyum remove-na、および yum remove-nevra を使用できます。

注記

named バイナリーを含むパッケージをインストールしたい場合に、このファイルがインストールされているディレクトリーが bin/sbin/ か分からない場合は、glob 表現で yum provides コマンドを実行します。

yum provides "*/file_name" は、file_name が含まれるパッケージを検索するのに便利です。

ダウンロード済みのパッケージを、システム上のローカルディレクトリーからインストールするには、以下のコマンドを使用します。

yum install path

path を、インストールするパッケージのパスに置き換えます。

または、yum localinstall コマンドを使用して、前に -nload を指定したパッケージを、ローカルディレクトリーからインストールできます。

2.3.2.2.4. パッケージの削除

特定のパッケージと、そのパッケージの依存関係パッケージをアンインストールをするには、root で以下のコマンドを実行します。

yum remove package_name...

コマンドに複数のパッケージ名を追加して、一度に複数のパッケージを削除するには、以下を行います。

install と同じように、remove では、以下の引数を使用できます。

  • パッケージ名
  • glob 表現
  • ファイル一覧
  • パッケージが提供する機能
警告

yum では、依存するパッケージを削除しなければパッケージを削除することはできません。

2.3.3. パッケージグループでの作業

パッケージグループは、たとえば システムツールサウンドとビデオ などの共通の目的でサービスを行うパッケージの集合です。パッケージグループをインストールすると、依存パッケージもプルされるので、時間が大幅に短縮できます。yum groups コマンドは、yum のパッケージグループに作用するすべての操作をカバーするトップレベルのコマンドです。

2.3.3.1. パッケージグループの一覧表示

summary オプションは、以下の数を表示するのに使用できます。

  • インストールされているグループ
  • 利用可能なグループ
  • 利用可能な環境変数
  • インストールされ、利用可能な言語グループ
yum groups summary

yum リポジトリーのパッケージグループを一覧表示するには、list オプションを追加します。コマンドの出力は、グループ名でフィルターを設定できます。

yum group list glob_expression...

このコマンドで使用できる任意の引数には、たとえば次のようなものがあります。hidden はユーザー表示可能とマークされていないグループも一覧表示し、ids はグループ ID を表示します。また、languageenvironmentinstalledavailable などのオプションを追加して、出力を特定のグループタイプに制限することもできます。

特定のグループに含まれている必須およびオプションのパッケージを一覧表示するには、以下のコマンドを使用します。

yum group info glob_expression...
注記

パッケージグループには、@ というマークを付けることができます。yum group listinfoinstall、または remove を使用する場合は、@group_name で、パッケージグループまたは環境グループを指定してください。

2.3.3.2. パッケージグループのインストール

パッケージグループにはそれぞれ、名前とグループ ID (groupid) があります。パッケージグループの名前とグループ ID (括弧内に表示される) を一覧表示するには、以下のコマンドを入力します。

yum group list ids

パッケージグループをインストールするには、group install コマンドに正式なグループ名 (groupid は含めない) を渡します。root で以下のコマンドを入力します。

yum group install group_name

groupid を使用してインストールすることもできます。root で、以下のコマンドを実行します。

yum group install groupid

groupid または引用付きグループ名の先頭に @ 記号を追加して、install コマンドに渡すことで、group install と同じように yum を実行できます。root で以下のコマンドを実行します。

yum install @group

group を、groupid または引用符で囲んだグループ名に置き換えます。同様に、環境グループに置き換えることもできます。

yum install @group

2.3.3.3. パッケージグループの削除

install 構文に類似した構文で、パッケージグループ名またはその ID を使用してパッケージグループを削除できます。root で以下のコマンドを入力します。

yum group remove group_name
yum group remove groupid

また、groupid または引用付き名前の先頭に @ 記号を追加して、remove コマンドに渡すことで、group remove と同じように yum を実行できます。root で以下のコマンドを実行します。

yum remove @group

group を、groupid または引用符で囲んだグループ名に置き換えます。同様に、環境グループに置き換えることもできます。

yum remove @group

2.4. トランザクション履歴の活用

yum history コマンドを使用すると、yum のトランザクションのタイムライン、トランザクションの発生日時、影響を受けたパッケージ数、トランザクション成功の有無、RPM データベースがトランザクション間で変更されたかどうかといった情報を確認できます。さらに、このコマンドを使用すると、特定のトランザクションを元に戻す、またはやり直すことが可能です。履歴データはすべて、/var/lib/yum/history/ ディレクトリーの history DB に保存されます。

2.4.1. トランザクションの一覧表示

最近発生した 20 件のトランザクションを一覧表示するには、root で引数なしで yum history を実行するか、シェルプロンプトで以下を実行します。

yum history list

特定のトランザクションを詳しく調べる場合は、root で以下のコマンドを実行します。

yum history info id...

ここでの id 引数は、トランザクションの ID を表します。この引数は任意ですが、引数を指定しないと、yum が最後のトランザクションを使用します。

2.4.2. トランザクションを元に戻す/繰り返す

トランザクション履歴の確認以外に、yum history コマンドは選択したトランザクションを元に戻す、または繰り返す方法を提供します。トランザクションを元に戻すには、root で次のコマンドを実行します。

yum history undo id

特定のトランザクションを繰り返すには、root で次のコマンドを実行します。

yum history redo id

どちらのコマンドでも last キーワードを使用して、最新のトランザクションを元に戻す、または繰り返すことができます。

yum history undo コマンドおよび yum history redo コマンドのどちらも、トランザクション中に実行されたステップを元に戻す、または繰り返すだけである点に注意してください。このトランザクションにより新しいパッケージがインストールされた場合に、yum history undo コマンドを実行すると、今回インストールしたパッケージがアンインストールされます。逆に、このトランザクションでパッケージがアンインストールされた場合は、このコマンドにより再度インストールされます。またこのコマンドは、(古いパッケージが引き続き利用可能な場合に)、更新済みパッケージをすべて以前のバージョンにダウングレードする試みも行います。

2.5. yum と yum リポジトリーの設定

yum および関連ユーティリティーの設定情報は /etc/yum.conf ファイルにあります。このファイルには、必須の [main] セクションが 1 つあり、ここで全体に影響を与える yum オプションを設定できます。また、[repository] セクションを 1 つ以上追加して、リポジトリー固有のオプションを設定することもできます。ただし、/etc/yum.repos.d/ ディレクトリーにある、新規または既存の .repo ファイルで個々のリポジトリーを定義することが推奨されます。/etc/yum.conf ファイルの各 [repository] セクションで定義した値は、[main] セクションに設定した値をオーバーライドします。

本セクションでは、以下の方法を紹介します。

  • /etc/yum.conf 設定ファイルの [main] セクションを編集して、yum のグローバルオプションを設定する方法
  • /etc/yum.repos.d/ ディレクトリーの /etc/yum.conf ファイルおよび .repo ファイルの [repository] セクションを編集して、個々のレポジトリーにオプションを設定する方法
  • コマンドラインで yum リポジトリーを追加、有効、無効にする方法

2.5.1. [main] オプションの設定

/etc/yum.conf 設定ファイルには、[main] セクションが 1 つだけ含まれます。本セクションにあるキー値ペアの中には、yum の動作に影響を与えるものもあれば、yum がリポジトリーを処理する方法に影響を与えるものもあります。

/etc/yum.conf[main] セクションの下に多くの情報を追加できます。

利用可能な [main] オプションの詳細なリストは、man ページの yum.conf(5) の [main] OPTIONS セクションを参照してください。

2.5.2. [repository] オプションの設定

[repository] セクションでは、個別の yum リポジトリーを定義できます。ここで repository は、 my_personal_repo (スペースは使用不可) などの一意のリポジトリー ID になります。競合を回避するために、カスタムリポジトリーには、Red Hat リポジトリーで使用されている名前を使用しないでください。

利用可能な [repository] オプションの完全なリストは、man ページの yum.conf(5) の [repository] OPTIONS セクションを参照してください。

2.5.3. 現行設定の表示

yum グローバルオプションの現在の値 (つまり /etc/yum.conf ファイルの [main] セクションで指定しているオプション) を表示するには、コマンドラインでオプションを付けずに yum-config-manager コマンドを実行します。

yum-config-manager

2.5.4. yum リポジトリーの追加、有効化、および無効化

「[repository] オプションの設定」 では、yum リポジトリーの定義に使用可能なさまざまなオプションを説明しました。本セクションでは、yum-config-manager コマンドを使用してリポジトリーを追加、もしくは有効または無効にする方法を説明します。

2.5.4.1. yum リポジトリーの追加

新しいリポジトリーを定義するには、[repository] セクションを、/etc/yum.conf ファイルか、/etc/yum.repos.d/ ディレクトリーの .repo ファイルに追加します。このディレクトリーで .repo ファイル拡張子が付いたすべてのファイルを、yum が読み取ります。リポジトリーは、/etc/yum.conf ではなく、ここに定義することが推奨されます。

警告

Red Hat の認証ベース Content Delivery Network (CDN) 以外の未検証または信頼できないソフトウェアソースから、ソフトウェアパッケージを取得してインストールする場合には、セキュリティー上のリスクが伴います。セキュリティー、安定性、互換性、保全性に関する問題につながる恐れがあります。

Yum リポジトリーは、一般的に .repo ファイルを提供します。システムにこのようなリポジトリーを追加して有効にするには、root で以下のコマンドを実行します。

yum-config-manager --add-repo repository_url

ここでの repository_url は、.repo ファイルへのリンクになります。

2.5.4.2. yum リポジトリーの有効化

特定のリポジトリーを有効にするには、root で以下のコマンドを入力します。

yum-config-manager --enable repository...

ここでの repository は、個々のリポジトリー ID です (yum repolist all を実行すると、利用可能なリポジトリー ID の一覧を確認できます)。

yum リポジトリーの無効化

yum リポジトリーを無効にするには、root で以下のコマンドを実行します。

yum-config-manager --disable repository...

ここでの repository は、個々のリポジトリー ID です (yum repolist all を実行すると、利用可能なリポジトリー ID の一覧を確認できます)。

2.6. yum プラグインの使用

Yum は、その操作を拡張し、強化するプラグインを提供します。特定のプラグインはデフォルトでインストールされています。yum コマンドを呼び出すたびに、読み込まれ、アクティブになっているプラグインがあれば Yum がそれを通知します。

2.6.1. yum プラグインを有効、設定、および無効にする方法

yum プラグインを有効にする場合は、/etc/yum.conf[main] セクションに plugins= で始まる行を追加し、その値を 1 にします。

plugins=1

すべてのプラグインを無効にするには、この行を plugins=0 に変更します。

重要

一部のプラグインは重要な yum サービスを提供するため、すべてのプラグインを無効にすることは推奨されません。その中でも product-id プラグインおよび subscription-manager プラグインは、証明書ベースの Content Delivery Network (CDN) への対応に必要です。プラグイン全体を無効にすることは簡単にできますが、通常は yum に潜在的な問題があると判断された場合に限り使用することが推奨されます。

/etc/dnf/plugins/ ディレクトリーには、インストールしているすべてのプラグインに対する設定ファイルがあります。このファイルに、プラグイン固有のオプションを設定できます。

/etc/yum.conf ファイルと同様、プラグイン設定ファイルには常に [main] セクションが含まれます。このセクションでは、enabled= オプションで、yum コマンドを実行する際にプログインを有効にするかどうかを制御します。このオプションがファイルに含まれていない場合は手動で追加できます。

/etc/yum.confenabled=0 を設定してすべてのプラグインを無効にすると、すべてのプラグインは、個々の設定ファイルで有効かどうかに関わらず無効になります。

1 つの yum コマンドで yum プラグインをすべて無効にする場合は、--noplugins オプションを使用します。

1 つの yum コマンドに、1 つ以上の yum プラグインを無効にする場合は、そのコマンドに --disableplugin=plugin_name オプションを追加します。

2.7. 関連資料

以下の資料は、YUM に関するその他の情報を提供します。

2.7.1. インストールされているドキュメント

  • yum(8) - yum コマンドラインユーティリティーの man ページでは、サポートされるオプションとコマンドの完全なリストを提供します。
  • yum.conf(5) - man ページの yum.conf では、利用できる yum 設定オプションを説明します。

2.7.2. オンラインのドキュメント