第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. 更新の確認
使用しているシステムに利用可能な更新があるインストール済みのパッケージを確認するには、以下のコマンドを実行します。
yum
check-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
コマンドを使用してカーネル (yum パッケージ)、Yum および RPM (yum および rpm パッケージ)、さらにはその依存関係 (rpm-libs、rpm-python パッケージ) をすべて更新できることも示しています。
9.1.2. パッケージの更新
一度に更新するパッケージ数を 1 つ、複数、または全てのパッケージから選択できます。更新するパッケージの依存関係、またはパッケージに利用可能な更新がある場合は、併せて更新されます。
単一パッケージの更新
1 つのパッケージを更新するには、root
で以下のコマンドを実行します。
yum update package_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 が尋ねるすべての質問に自動的に 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 は、obsoletes
設定オプションを有効にして 更新
する upgrade
コマンドも提供します (「[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 に更新されます。
パッケージの自動更新
パッケージのデータベースを更新し、更新を自動的にダウンロードするには、yum-cron
サービスを使用できます。詳細は、「yum-cron を使用したパッケージデータベースの自動更新および更新のダウンロード」 を参照してください。
9.1.3. ISO と Yum を使用してシステムをオフラインでアップグレード
インターネットまたは Red Hat Network から切断されたシステムの場合は、yum update
コマンドと Red Hat Enterprise Linux インストール ISO イメージを使用すると、システムを最新のマイナーバージョンに簡単かつ素早くアップグレードできます。以下の手順はアップグレードプロセスを示しています。
ISO イメージをマウントするターゲットディレクトリーを作成します。このディレクトリーは、マウント時に自動的に作成されません。
root
で以下のコマンドを実行します。mkdir mount_dir
mount_dir は、マウントディレクトリーへのパスに置き換えます。通常は、ユーザーが
/media
ディレクトリー内のサブディレクトリーとして作成します。以前に作成されたターゲットディレクトリーに Red Hat Enterprise Linux 7 インストール ISO イメージをマウントします。
root
で以下のコマンドを実行します。mount -o loop iso_name mount_dir
iso_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 をファイル名と置き換えます (例: 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
で以下のコマンドを実行します。yum
update
これにより、システムはマウントされた ISO イメージで提供されたバージョンにアップグレードされます。
アップグレードに成功したら、ISO イメージをアンマウントできます。
root
で以下のコマンドを実行します。umount mount_dir
ここで、mount_dir はマウントディレクトリーへのパスです。また、最初の手順で作成されたマウントディレクトリーを削除することもできます。
root
で以下のコマンドを実行します。rmdir mount_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 -o looprhel-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
で以下のコマンドを実行します。
~]# yum update
システムが正常にアップグレードされたら、イメージをアンマウントし、ターゲットディレクトリーと設定ファイルを削除できます。
~]# umount /media/rhel7/
~]# rmdir /media/rhel7/
~]# rm
/etc/yum.repos.d/rhel7.repo