第8章 Yum
yum は Red Hatnbsp;Hat パッケージマネージャーで、利用可能なパッケージに関する情報のクエリー、リポジトリーからのパッケージのフェッチ、パッケージのインストールおよびアンインストール、さらに利用可能な最新バージョンへのシステム全体の更新が可能です。Yum は、更新/インストール/削除を実行しているパッケージで依存関係の自動解決を行います。そのため、利用可能なすべての依存パッケージを自動的に決定/フェッチ/インストールすることができます。
yum は、新しいリポジトリー、追加リポジトリー、または パッケージソース で設定でき、その機能を強化し、拡張するプラグインを多数提供します。yum は、RPM が実行できる同じタスクを多数実行できます。さらに、多くのコマンドラインオプションも似ています。Yum を使用することで、1 つのマシンまたはマシンのグループ上でのパッケージ管理を簡単かつシンプルに行うことができます。
以下のセクションでは、『Red Hat Enterprise Linux 6 インストールガイド』で説明されているように、インストール時にシステムが Red Hat Subscription Management に登録されていることを前提としています。システムがサブスクライブされていない場合は、6章システム登録およびサブスクリプション管理 を参照してください。
GPG 署名パッケージによるセキュアなパッケージ管理
yum は、GPG(Gnu Privacy Guard(別名 GnuPG))の署名検証をすべてのパッケージリポジトリー(パッケージソースなど)または個々のリポジトリーで有効にすることで、セキュアなパッケージ管理を提供します。署名の検証を有効にすると、Yum はリポジトリーの正しいキーで GPG 署名されていないパッケージのインストールを拒否します。つまり、お使いのシステムにダウンロードしてインストールする RPM パッケージが Red Hatnbsp;Hat などの信頼できるソースからいることを信頼でき、転送中に変更されなかったことを意味します。Yum での署名確認を有効にする方法は 「Yum と Yum リポジトリーの設定」 または 「パッケージの署名の確認」 で一般的な GPG 署名 RPM パッケージを使用および検証する方法についての詳細は、を参照してください。
Yum を使用すると、他のマシンへダウンロードし、インストールするための RPM パッケージのリポジトリーを簡単に設定することができます。
Yum の学習は、システム管理タスクを実行する最も高速な方法であり、PackageKit グラフィカルパッケージ管理ツールが提供する以上の機能を提供します。PackageKit の使用方法は、9章PackageKit を参照してください。
yum および superuser の特権
yum を使用して、システムにパッケージをインストール、更新、または削除するにはスーパーユーザー権限が必要です。本章のすべての例では、su または sudo コマンドを使用することでスーパーユーザー権限をすでに持っていると仮定しています。
8.1. パッケージの確認と更新
8.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
- 更新パッケージが置かれているリポジトリー
この出力では、yum を使用してカーネル( kernel パッケージ)、Yum および RPM( yum パッケージ)、およびその依存関係( rpm、kernel-firmware、および rpm-libs パッケージ)をすべて更新できることも示しています。rpm-python
8.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]:
この出力で重要となる項目がいくつかあります。
Loaded plugins: product-id, refresh-packagekit, subscription-manager
- yum は常に、どの Yum プラグインがインストールされ、有効になっているかを通知します。Yum プラグインに関する一般的な情報は、「yum のプラグイン」 を参照してください。特定のプラグインの説明は、「プラグインの説明」 を参照してください。udev.x86_64
- 新しい udev パッケージをダウンロードしてインストールできます。- yum は更新情報を表示し、更新を実行するかどうかを尋ねられます。yum はデフォルトで対話的に実行されます。yum コマンドが実行する予定のトランザクションがすでに分かっている場合は、
-y
オプションを使用して、yum が質問する質問(この場合は非対話的に実行)に対して、自動的に yes と回答できます。ただし、発生する可能性のある問題を簡単にトラブルシューティングできるように、yum がシステムに加える変更を必ず確認する必要があります。トランザクションが到着する場合は、「トランザクション履歴の活用」 で説明されているように yum history コマンドを使用して Yum のトランザクション履歴を表示できます。
Yum を使用したカーネルの更新とインストール
yum は、rpm -i kernel コマンドを使用する際に RPM が新しいカーネルをインストールするのと同様に、新しいカーネルを常にインストールします。したがって、yum を使用する際に、カーネルパッケージの インストール と アップグレード の違いを考慮する必要はありません。 yum update コマンドまたは yum install コマンドを使用しているかどうかに関わらず、適切な操作を行います。
一方、RPM を使用する場合は、rpm -u kernel (現在のカーネルを 置き換える )の代わりに rpm -i kernel コマンド(新しいカーネルをインストール)を使用することが重要です。RPM を使用したカーネルのインストール/アップグレードの詳細は、「インストールおよび設定ガイド」 を参照してください。
すべてのパッケージとそれらの依存関係の更新
パッケージとその依存関係をすべて更新するには、引数なしで yum update を入力します。
yum update
セキュリティー関連パッケージの更新
どのパッケージでセキュリティー更新が利用可能かを検出し、それらのパッケージを迅速かつ簡単に更新することが重要になります。yum は、この目的のためにプラグインを提供します。security プラグインは、yum コマンドを、高度なセキュリティー中心のコマンド、サブコマンド、およびオプションのセットで拡張します。具体的な情報については、「プラグインの説明」 を参照してください。
パッケージの自動更新
パッケージに定期的な自動更新を設定することもできます。このため、Red Hat Enterprise Linux 6 では yum-cron パッケージを使用します。これは
cron
デーモンの Yum インターフェースを提供し、パッケージリポジトリーからメタデータをダウンロードします。yum-cron サービスを有効にすると、ユーザーは毎日自動的に Yum の更新を cron ジョブとしてスケジュールできます。
注記
yum-cron パッケージは、Optional サブスクリプションチャンネルで提供されます。Red Hat 追加チャンネルの詳細は、「Optional および Supplementary リポジトリーの追加」 を参照してください。
yum-cron をインストールするには、以下のコマンドを実行します。
~]# yum install yum-cron
デフォルトでは、yum-cron サービスは無効になっており、手動でアクティブ化して起動する必要があります。
~]# chkconfig yum-cron on
~]# service yum-cron start
サービスのステータスを確認するには、以下のコマンドを実行します。
~]# service yum-cron status
yum-cron パッケージに含まれるスクリプトは、更新のエクステントと頻度を変更し、通知をメールに送信するように設定できます。yum-cron をカスタマイズするには、
/etc/sysconfig/yum-cron
ファイルを編集します。
yum-cron
の詳細は、/etc/sysconfig/yum-cron
内のコメントと yum-cron(8)man ページを参照してください。
8.1.3. 設定ファイルの変更の保存
Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;Linux システムの使用時に、パッケージによりインストールされた設定ファイルに変更を加えます。Yum がシステムの変更の実行に使用する RPM は、整合性を確保するメカニズムを提供します。パッケージアップグレード全体で設定ファイルへの変更を管理する方法は、「インストールおよび設定ガイド」 を参照してください。
8.1.4. ISO と Yum を使用してシステムをオフラインでアップグレード
インターネットまたは Red Hat Network から切断されたシステムの場合は、yum update コマンドと Red Hat Enterprise Linux インストール ISO イメージを使用すると、システムを最新のマイナーバージョンに簡単かつ迅速にアップグレードできます。以下の手順はアップグレードプロセスを示しています。
- ISO イメージをマウントするターゲットディレクトリーを作成します。このディレクトリーは、マウント時に自動的に作成されません。
root
で以下のコマンドを実行します。mkdir mount_dir
mount_dir をマウントディレクトリーへのパスに置き換えます。通常、ユーザーは/media
ディレクトリーのサブディレクトリーとして作成します。 - 以前に作成したターゲットディレクトリーに Red Hat Enterprise Linux 6 インストール ISO イメージをマウントします。
root
で以下のコマンドを実行します。mount
-o
loop
iso_name mount_diriso_name は ISO イメージへのパスに、mount_dir はターゲットディレクトリーへのパスに置き換えます。ブロックデバイスとしてファイルをマウントするには、-o
loop
オプションが必要です。 media.repo
ファイルをマウントディレクトリーから/etc/yum.repos.d/
ディレクトリーにコピーします。正常に機能するために、このディレクトリーの設定ファイルの拡張子は .repo である必要があります。cp
mount_dir/media.repo
/etc/yum.repos.d/new.repo
これにより、yum リポジトリーの設定ファイルが作成されます。new.repo をファイル名に置き換えます(例: rhel6.repo )。- Red Hat Enterprise Linux インストール ISO を参照するように新しい設定ファイルを編集します。
/etc/yum.repos.d/new.repoファイルに以下の行を追加します。
baseurl=file:///mount_dir
mount_dir は、マウントポイントへのパスに置き換えます。 - 前の手順で作成された
/etc/yum.repos.d/new.repo
を含む、yum リポジトリーをすべて更新します。root
で以下のコマンドを実行します。yum
update
これにより、システムはマウントされた ISO イメージで提供されたバージョンにアップグレードされます。 - アップグレードに成功したら、ISO イメージをアンマウントできます。
root
で以下のコマンドを実行します。umount mount_dir
mount_dir はマウントディレクトリーへのパスです。また、最初の手順で作成されたマウントディレクトリーを削除することもできます。root
で以下のコマンドを実行します。rmdir mount_dir
- 以前に作成された設定ファイルを別のインストールまたは更新に使用しない場合は、その設定ファイルを削除できます。
root
で以下のコマンドを実行します。rm
/etc/yum.repos.d/new.repo
例8.1 Red Hat Enterprise Linux 6.3 から 6.4 へのアップグレード
インターネットにアクセスせずにシステムをアップグレードする必要があるとします。これを行うには、新しいバージョンのシステムとともに ISO イメージを使用します(例:
RHEL6.4-Server-20130130.0-x86_64-DVD1.iso
)。マウント用に作成されたターゲットディレクトリーは /media/rhel6/
です。root
で ISO イメージがあるディレクトリーに移動し、以下のコマンドを入力します。
~]# mount-o
loop
RHEL6.4-Server-20130130.0-x86_64-DVD1.iso
/media/rhel6/
次に、マウントディレクトリーから
media.repo
ファイルをコピーして、イメージ用の yum リポジトリーをセットアップします。
~]# cp/media/rhel6/media.repo
/etc/yum.repos.d/rhel6.repo
yum にマウントポイントをリポジトリーとして認識させるには、前の手順でコピーした
/etc/yum.repos.d/rhel6.repo
に以下の行を追加します。
baseurl=file:///media/rhel6/
この時点で、yum リポジトリーを更新すると、
RHEL6.4-Server-20130130.0-x86_64-DVD1.iso
により提供されたバージョンにシステムがアップグレードされます。root
で以下を実行します。
~]# yum update
システムが正常にアップグレードされたら、イメージをアンマウントし、ターゲットディレクトリーと設定ファイルを削除できます。
~]# umount /media/rhel6/
~]# rmdir /media/rhel6/
~]# rm /etc/yum.repos.d/rhel6.repo