Show Table of Contents
第9章 Yum
Yum は Red Hat パッケージマネージャーです。Yum は、パッケージ情報に関するクエリ、リポジトリからのパッケージのフェッチ、パッケージのインストールとアンインストール、さらには利用可能な最新バージョンへのシステム全体の更新を行うことができます。Yum は、パッケージの更新/インストール/削除を実行しているパッケージで依存関係の自動解決を行います。そのため、利用可能なすべての依存パッケージを自動的に決定/フェッチ/インストールすることができます。
Yum は、新しい追加のリポジトリーまたは パッケージソース を使って設定することができ、機能を強化、拡張する多くのプラグインも提供します。また、Yum は RPM が実行可能な同じタスクの多くを行うことができます。さらに、多数のコマンドラインオプションも似ています。Yum を使うことで、1 つのマシンまたはマシンのグループ上でのパッケージ管理を簡単かつシンプルに行うことができます。
以下のセクションでは、ご使用のシステムが Red Hat Enterprise Linux 7 インストールガイド で示されてるようにインストール中に Red Hat サブスクリプション管理で登録されたことを前提としています。システムがサブスクライブされていない場合は、7章システム登録およびサブスクリプション管理 を参照してください。
重要
Yum は、GPG (Gnu Privacy Guard: 別名 GnuPG) 署名付きパッケージの GPG 署名認証をすべてのパッケージリポジトリー (パッケージソース) または個々のリポジトリーで有効にすることで、セキュアなパッケージ管理を実現します。署名認証が有効になっていると、Yum は正しいキーで GPG 署名されていないパッケージのそのリポジトリーへのインストールを拒否します。つまり、使用中のシステムにダウンロードしてインストールする RPM パッケージが Red Hat などの信頼されたソースからのものであり、移動中に変更されていないことが確信できます。Yum の署名認証を有効にする方法については、「Yum と Yum リポジトリーの設定」 を参照してください。
Yum を使用すると、他のマシンへダウンロード、インストールするための RPM パッケージのリポジトリーを簡単に設定することもできます。可能な場合は、yum は複数パッケージとメタデータの 並行ダウンロード を使用してダウンロードのスピードを高めます。
システム管理タスクの実行には Yum が最速の方法であることが多いため、これは習得する価値があります。また、Yum は PackageKit グラフィカルパッケージ管理ツールが提供する以上の機能を提供します。
注記
yum を使用して、システムにパッケージをインストール、更新、削除するにはスーパーユーザー権限が必要です。本章のすべての例では、
su または sudo コマンドを使用することでスーパーユーザー権限をすでに持っていると仮定しています。
9.1. パッケージの確認と更新
Yum を使用すると、使用中のシステムに適用される更新があるかどうかをチェックできます。更新が必要なパッケージを一覧表示してこれらを一度に更新することや、個別パッケージを選択して更新することができます。
9.1.1. 更新の確認
使用しているシステムに利用可能な更新があるインストール済みのパッケージを確認するには、以下のコマンドを実行します:
yumcheck-update
例9.1 yum check-update コマンドの出力例
yum check-update の出力は以下のようになります。
~]# yum check-update
Loaded plugins: product-id, search-disabled-repos, subscription-manager
dracut.x86_64 033-360.el7_2 rhel-7-server-rpms
dracut-config-rescue.x86_64 033-360.el7_2 rhel-7-server-rpms
kernel.x86_64 3.10.0-327.el7 rhel-7-server-rpms
rpm.x86_64 4.11.3-17.el7 rhel-7-server-rpms
rpm-libs.x86_64 4.11.3-17.el7 rhel-7-server-rpms
rpm-python.x86_64 4.11.3-17.el7 rhel-7-server-rpms
yum.noarch 3.4.3-132.el7 rhel-7-server-rpms
上記の出力に表示されているパッケージには利用可能な更新があると示されています。一覧の最初のパッケージは、dracut です。出力例の各行は複数の行から構成されます。dracut の場合、以下の構成になっています。
dracut— パッケージ名x86_64— パッケージがビルドされた CPU アーキテクチャー033— インストールされる更新済みパッケージのバージョン360.el7— 更新されるパッケージのリリース_2— ビルドのバージョン。z-stream 更新の一部として追加rhel-7-server-rpms— 更新済みのパッケージがあるリポジトリ
また上記の出力は、
yum コマンドを使ってカーネル (kernel パッケージ)、Yum および RPM (yum および rpm パッケージ)、さらにはそれらの依存関係 (rpm-libs、rpm-python パッケージ) をすべて更新できることも示しています。
9.1.2. パッケージの更新
1 回に更新するパッケージ数を 1 つ、複数、又は全てのパッケージから選択することができます。更新するパッケージの依存関係またはパッケージに利用可能な更新がある場合は、それらも更新されます。
単一パッケージの更新
単一パッケージを更新するには、
root で以下のコマンドを実行して下さい:
yumupdatepackage_name
例9.2 rpm パッケージの更新
rpm パッケージを更新するには、以下を入力します。
~]# yum update rpm
Loaded plugins: langpacks, product-id, subscription-manager
Updating Red Hat repositories.
INFO:rhsm-app.repolib:repos updated: 0
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package rpm.x86_64 0:4.11.1-3.el7 will be updated
--> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-libs-4.11.1-3.el7.x86_64
--> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-python-4.11.1-3.el7.x86_64
--> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-build-4.11.1-3.el7.x86_64
---> Package rpm.x86_64 0:4.11.2-2.el7 will be an update
--> Running transaction check
...
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Updating:
rpm x86_64 4.11.2-2.el7 rhel 1.1 M
Updating for dependencies:
rpm-build x86_64 4.11.2-2.el7 rhel 139 k
rpm-build-libs x86_64 4.11.2-2.el7 rhel 98 k
rpm-libs x86_64 4.11.2-2.el7 rhel 261 k
rpm-python x86_64 4.11.2-2.el7 rhel 74 k
Transaction Summary
=============================================================================
Upgrade 1 Package (+4 Dependent packages)
Total size: 1.7 M
Is this ok [y/d/N]:
この出力には興味を引くアイテムがいくつかあります。
Loaded plugins: langpacks, product-id, subscription-manager— yum は、どの Yum プラグインがインストールされ有効であるかを常に通知します。Yum プラグインに関する一般的情報は 「Yum のプラグイン」 を参照してください。また、個別のプラグインに関する説明は 「yum プラグインの使用方法」 を参照してください。rpm.x86_64— 新しい rpm パッケージとその依存関係をダウンロードしてインストールすることができます。これらの各パッケージに対してトランザクションチェックが行われます。- yum を使用すると、更新情報を表示し、更新を確認できます。yum はデフォルトでは対話的に実行されます。
yumコマンドがどのトランザクションを実行するかが事前にわかっている場合は、-yオプションを使用して、yum が尋ねるすべての質問にyesと自動回答できます (この場合は非対話的に実行されます)。ただし、yum によりシステムに行われる変更を常に調べる必要があります。その結果、発生する可能性がある問題を簡単にトラブルシューティングできます。また、パッケージをインストールせずにダウンロードすることも選択もできます。この場合は、ダウンロードプロンプトでdオプションを選択します。これにより、選択されたパッケージのバックグラウンドでのダウンロードが開始されます。トランザクションが正しく行われなかった場合は、「トランザクション履歴の活用」 にあるようにyum historyコマンドを使用して Yum のトランザクション履歴を閲覧することができます。
重要
yum update または yum install コマンドを使用しているかどうかに関係なく、Yum は常に新しいのカーネルをインストールします。
一方で RPM を使用する場合は、
rpm -u kernel (現在のカーネルと 置換) の代わりに、rpm -i kernel コマンド (新しいカーネルのインストール) を使用することが重要です。
同様に、パッケージグループを更新することできます。
root で以下を入力します。
yum group update group_name
ここでは、group_name を更新するパッケージグループに置き換えます。パッケージグループについての詳細は、「パッケージグループでの作業」 を参照してください。
Yum には
upgrade コマンドもあります。これは、obsoletes 設定オプションを有効にした update と同様のものです (「[main] オプションの設定」 参照)。デフォルトでは、obsoletes は /etc/yum.conf で on になっており、これによりこの 2 つのコマンドが同等のものになっています。
すべてのパッケージとそれらの依存関係の更新
すべてのパッケージとそれらの依存関係を更新するには、引数なしで
yum update コマンドを使用します。
yum updateセキュリティー関連パッケージの更新
パッケージでセキュリティー更新が利用可能な場合は、これらのパッケージのみを最新のバージョンに更新できます。
root として次のコマンドを入力します。
yum update --security
また、最新のセキュリティー更新を含むバージョンにのみパッケージを更新するとこともできます。
root として次のコマンドを入力します。
yum update-minimal --security
たとえば、以下の例を考えてみます。
- kernel-3.10.0-1 パッケージがシステムにインストールされている。
- kernel-3.10.0-2 パッケージがセキュリティ更新としてリリースされている。
- kernel-3.10.0-3 がバグ修正の更新としてリリースされた。
この場合、
yum update-minimal --security だとパッケージが kernel-3.10.0-2 に更新され、yum update --security だとパッケージが kernel-3.10.0-3 に更新されます。
9.1.3. ISO と Yum を使用してシステムをオフラインでアップグレード
インターネットまたは Red Hat Network から切断されたシステムの場合は、
yum update コマンドと Red Hat Enterprise Linux インストール ISO イメージを使用すると、システムを最新のマイナーバージョンに簡単かつ素早くアップグレードできます。以下の手順はアップグレードプロセスを示しています。
- ISO イメージをマウントするターゲットディレクトリーを作成します。このディレクトリーは、マウント時に自動的に作成されません。次の手順に進む前に作成してください。
rootで以下のコマンドを入力します。mkdirmount_dirmount_dir は、マウントディレクトリーへのパスに置き換えます。通常は、ユーザーが/mediaディレクトリー内のサブディレクトリーとして作成します。 - 以前に作成されたターゲットディレクトリーに Red Hat Enterprise Linux 7 インストール ISO イメージをマウントします。
rootで以下のコマンドを入力します。mount-oloopiso_name mount_diriso_name を ISO イメージへのパスと置き換え、mount_dir をターゲットディレクトリーへのパスと置き換えます。ここでは、ファイルをブロックデバイスとしてマウントするために、-oloopオプションが必要です。 media.repoファイルをマウントディレクトリーから/etc/yum.repos.d/ディレクトリーにコピーします。正常に機能するために、このディレクトリーの設定ファイルの拡張子は .repo である必要があります。cpmount_dir/media.repo/etc/yum.repos.d/new.repoこれにより、yum リポジトリーの設定ファイルが作成されます。new.repo をファイル名と置き換えます (例: rhel7.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で以下のコマンドを入力します。yumupdateこれにより、システムはマウントされた ISO イメージで提供されたバージョンにアップグレードされます。 - アップグレードに成功したら、ISO イメージをアンマウントできます。
rootで以下のコマンドを入力します。umountmount_dirここで、mount_dir はマウントディレクトリーへのパスです。また、最初の手順で作成されたマウントディレクトリーを削除することもできます。rootで以下のコマンドを入力します。rmdirmount_dir - 以前に作成された設定ファイルを別のインストールまたは更新に使用しない場合は、その設定ファイルを削除できます。
rootで以下のコマンドを入力します。rm/etc/yum.repos.d/new.repo
例9.3 Red Hat Enterprise Linux 7.0 から 7.1 へのアップグレード
インターネットにアクセスせずに ISO イメージ (例:
rhel-server-7.1-x86_64-dvd.iso) を使用してシステムを新しいバージョンにアップグレードする必要がある場合は、/media/rhel7/ などのマウント用ターゲットディレクトリーを作成します。root として ISO イメージがあるディレクトリーに移動し、以下のコマンドを入力します。
~]#mount-olooprhel-server-7.1-x86_64-dvd.iso/media/rhel7/
次に、マウントディレクトリーから
media.repo ファイルをコピーしてイメージ用の yum リポジトリーをセットアップします。
~]#cp/media/rhel7/media.repo/etc/yum.repos.d/rhel7.repo
yum にマウントポイントをリポジトリーとして認識させるために、前の手順でコピーされた
/etc/yum.repos.d/rhel7.repo に以下の行を追加します。
baseurl=file:///media/rhel7/
この時点で、yum リポジトリーを更新すると、
rhel-server-7.1-x86_64-dvd.iso により提供されたバージョンにシステムがアップグレードされます。root で以下のコマンドを実行します。
~]#yumupdate
システムが正常にアップグレードされたら、イメージをアンマウントし、ターゲットディレクトリーと設定ファイルを削除できます。
~]#umount/media/rhel7/
~]#rmdir/media/rhel7/
~]#rm/etc/yum.repos.d/rhel7.repo

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.