第6章 Yum

Yum は Red Hat パッケージマネージャーです。Yum は、パッケージ情報に関するクエリ、リポジトリからのパッケージのフェッチ、パッケージのインストールとアンインストール、さらには利用可能な最新バージョンへのシステム全体の更新を行うことができます。Yum は、更新/インストール/削除を実行しているパッケージで依存関係の自動解決を行います。そのため、利用可能なすべての依存パッケージを自動的に決定/フェッチ/インストールすることができます。
Yum は、新しい追加のリポジトリまたは パッケージソース を使って設定することができ、機能を向上して拡張する多くのプラグインも提供します。また、Yum は RPM が実行できる多くの同じタスクを行うことができます。さらに、多くのコマンドラインオプションも似ています。Yum を使うことで、1 つのマシンまたはマシンのグループ上でのパッケージ管理を簡単かつシンプルに行うことができます。

GPG 署名付きのパッケージを使ったセキュアなパッケージ管理

Yum は、GPG (Gnu Privacy Guard: 別名 GnuPG) 署名付きのパッケージの GPG 署名照合をすべてのパッケージリポジトリ (パッケージソース) または個々のリポジトリに有効にすることで、セキュアなパッケージ管理を実現します。署名照合が有効な場合、Yum はリポジトリに対して GPG 署名がない不正確なキーを持つパッケージのインストールを拒否します。これにより、ご使用のシステムにダウンロードしてインストールする RPM パッケージが Red Hat などの信頼されたソースからのものであり、移行中に変更されていないことが信用できます。Yum を使用して署名照合を有効にする方法については、「Yum と Yum リポジトリの設定」 を参照して下さい。また、GPG 署名付きの RPM パッケージ全般の使用及び検証方法に関しては 「パッケージの署名確認」 を参照して下さい。
Yum を使用すると、他のマシンへダウンロード/インストールするための RPM パッケージのリポジトリを簡単に設定することができます。
Yum を使用するとシステム管理タスクを最速で実行できることが多いため、習得する価値は十分にあります。また、Yum は PackageKit グラフィカルパッケージ管理ツールが実現できる以上の機能を提供します。PackageKit の使用に関する詳細は、7章PackageKit を参照して下さい。

Yum とスーパーユーザー権限

yum を使用して、システムにパッケージをインストール/更新/削除するにはスーパーユーザー権限が必要です。本章のすべての例では、su または sudo コマンドを使用することでスーパーユーザー権限をすでに持っていると仮定しています。

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

6.1.1. 更新の確認

使用しているシステムに利用可能な更新があるインストール済みのパッケージを確認するには、以下のコマンドを実行します:
yum check-update
例:
~]# yum check-update
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
INFO:rhsm-app.repolib:repos updated: 0
PackageKit.x86_64                  0.5.8-2.el6                rhel
PackageKit-glib.x86_64             0.5.8-2.el6                rhel
PackageKit-yum.x86_64              0.5.8-2.el6                rhel
PackageKit-yum-plugin.x86_64       0.5.8-2.el6                rhel
glibc.x86_64                       2.11.90-20.el6             rhel
glibc-common.x86_64                2.10.90-22                 rhel
kernel.x86_64                      2.6.31-14.el6              rhel
kernel-firmware.noarch             2.6.31-14.el6              rhel
rpm.x86_64                         4.7.1-5.el6                rhel
rpm-libs.x86_64                    4.7.1-5.el6                rhel
rpm-python.x86_64                  4.7.1-5.el6                rhel
udev.x86_64                        147-2.15.el6               rhel
yum.noarch                         3.2.24-4.el6               rhel
上記の出力に表示されているパッケージには、利用可能な更新があります。一覧の最初のパッケージは、PackageKit と呼ばれるグラフィカルパッケージマネージャーです。その行の意味は以下のとおりです。
  • PackageKit — パッケージの名前
  • x86_64 — パッケージがビルドされた CPU アーキテクチャー
  • 0.5.8 — インストールされる更新済みパッケージのバージョン
  • rhel — 更新済みのパッケージがあるリポジトリ
また、上記の出力は、カーネル (kernel パッケージ)、Yum および RPM (yum および rpm のパッケージ)、さらにはそれらの依存関係 (kernel-firmwarerpm-libsrpm-python のパッケージ) をすべて yum を使って更新できることも示しています。

6.1.2. パッケージの更新

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

単一パッケージの更新

単一パッケージを更新するには、root で以下のコマンドを実行して下さい:
yum update package_name
例として、udev パッケージを更新するには以下のとおり入力します:
~]# yum update udev
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
INFO:rhsm-app.repolib:repos updated: 0
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package udev.x86_64 0:147-2.15.el6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================
 Package       Arch            Version                 Repository     Size
===========================================================================
Updating:
 udev          x86_64          147-2.15.el6            rhel          337 k

Transaction Summary
===========================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total download size: 337 k
Is this ok [y/N]:
この出力には興味を引く項目が数点あります。
  1. Loaded plugins: product-id, refresh-packagekit, subscription-manageryum は、どの Yum プラグインがインストールされ有効であるかを常に通知します。Yum プラグインに関する全般情報は 「Yum のプラグイン」 を参照してください。また、個別のプラグインに関する説明は 「プラグインの詳細」 を参照してください。
  2. udev.x86_64 — 新しい udev パッケージをダウンロードしてインストールできます。
  3. yum は、更新情報を表示して、更新を実行したいかどうかを確認します。yum はデフォルトではインタラクティブに実行します。yum コマンドがどのトランザクションを実行するかが事前に分かっている場合は、-y オプションを使用して、yum が行うすべての質問に yes と自動回答するように設定できます (この場合はノンインタラクティブに実行されます)。ただし、yum がシステムに実行しようとしている変更を常に調べることをお勧めします。そうすることで、起こり得る問題を簡単に解決することができます。
    トランザクションが正しく行われなかった場合は、yum history コマンドを使用して 「トランザクション履歴の活用」 にあるように Yum のトランザクション履歴を閲覧することができます。

Yum を使ったカーネルの更新とインストール

rpm -i kernel のコマンドを使用すると、RPM が新しいカーネルをインストールするのと同じように、yum は常に新しいカーネルを インストール します。そのため、yum を使用する場合は、カーネルパッケージの インストールアップグレード の区別について気にする必要はありません。つまり、yum updateyum install のコマンドどちらを使用するかに関わらず正しく実行します。
一方で、RPM を使用する場合は、rpm -u kernel (現在のカーネルと 置換) の代わりに、rpm -i kernel コマンド (新しいカーネルのインストール) を使用することが重要です。RPM を使ったカーネルのインストール/アップグレードについての詳細は、「インストールとアップグレード」 を参照してください。

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

すべてのパッケージとそれらの依存関係を更新するには、yum update と (引数なしで) 入力するだけです:
yum update

セキュリティ関連パッケージの更新

どのパッケージに利用可能なセキュリティの更新があるのかを見つけ出し、そうしたパッケージを迅速かつ簡単に更新することは重要です。このため、Yum はプラグインを提供します。security プラグインは、yum コマンドを非常に便利なセキュリティ中心のコマンド、サブコマンド、オプションのセットにより拡張します。具体的な情報は 「プラグインの詳細」 を参照して下さい。

6.1.3. 設定ファイルの変更の保存

Red Hat Enterprise Linux システムを使用していると、パッケージによりインストールされた設定ファイルに変更を加える必要がでてきます。システムに変更を加えるために Yum が使用する RPM には、整合性を確保する仕組みが備わっています。パッケージのアップグレード全般に渡る設定ファイルへの変更を管理する方法の詳細については、「インストールとアップグレード」 を参照して下さい。