第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 は、デフォルトで対話的に動作します。
-y
コマンドが実行する予定のトランザクションがすでに分かっている場合は、yum
オプションを使用して、yum が質問する質問 (この場合は非対話的に実行) に対して、自動的にyes
と回答できます。オプションを使用して、yum が尋ねるすべての質問に自動的に yes と回答するように設定できます (この場合は非対話的に実行されます)。ただし、yum によりシステムに行われる変更を常に調べる必要があります。これを行うには、ダウンロードプロンプトでd
オプションを選択します。これにより、選択されたパッケージのバックグラウンドでのダウンロードが開始します。トランザクションが正しく行われなかった場合は、「トランザクション履歴の活用」 にあるように
yum history
コマンドを使用して Yum のトランザクション履歴を表示できます。
yum は、yum update
または yum install
コマンドを使用しているかどうかに関わらず、新しいカーネルを常に インストール します。
一方、RPM を使用する場合は、rpm -i kernel
コマンド (現在のカーネルを 置き換える) ではなく、rpm -u kernel
コマンド (新しいカーネルをインストール) を使用することが重要です。
同様に、パッケージグループを更新できます。root
として入力します。
yum group update group_name
group_name を、更新するパッケージグループの名前に置き換えます。パッケージグループの詳細は「パッケージグループでの作業」を参照してください。
Yum は、有効な obsoletes
設定オプション update
と同じ 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
9.2. パッケージでの作業
Yum では、パッケージの検索、パッケージについての情報の表示、パッケージのインストールおよび削除など、ソフトウェアパッケージの完全な操作が可能です。
9.2.1. パッケージの検索
以下のコマンドを使用することで、すべての RPM のパッケージ名、詳細、サマリーを検索できます。
yum
search
term…
term を、検索するパッケージ名に置き換えます。
例9.4 特定の文字列に一致するパッケージの検索
vim や gvim、または emacs に一致するパッケージを一覧表示するには、以下を入力します。
~]$ yum search vim gvim emacs Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ============================= N/S matched: vim ============================== vim-X11.x86_64 : The VIM version of the vi editor for the X Window System vim-common.x86_64 : The common files needed by any version of the VIM editor [output truncated] ============================ N/S matched: emacs ============================= emacs.x86_64 : GNU Emacs text editor emacs-auctex.noarch : Enhanced TeX modes for Emacs [output truncated] Name and summary matches mostly, use "search all" for everything. Warning: No matches found for: gvim
yum search
コマンドは、パッケージ名は分からないものの、関連用語を知っている場合にパッケージを検索する際に役立ちます。デフォルトでは、yum search
はパッケージ名とサマリーが一致したものを返すため、検索には時間がかかりません。より詳細な検索には yum search all
コマンドを使用しますが、検索は遅くなります。
結果のフィルタリング
yum の list コマンドでは、1 つ以上の glob 表現 を引数として追加することで、結果をフィルタリングできます。glob 表現は、1 つ以上のワイルドカード文字 *
(任意の文字サブセットに拡張) と ?
(任意の 1 文字に拡張) を含む通常の文字列です。
yum
コマンドに glob 表現を引数として渡す場合には、glob 表現をエスケープするように注意してください。これを行わないと、bash シェルはこの表現を パス名の展開 と解釈してしまい、glob と適合する現在のディレクトリー内の全ファイルを yum
に渡すおそれがあります。確実に glob 表現を yum
に渡すには、以下のいずれかの方法で行います。
- ワイルドカード文字の前にバックスラッシュ記号を入力して、ワイルドカード文字をエスケープする
- glob 表現全体を二重引用符または単一引用符でくくる
以下のセクションの例では、上記の両方の使用例を説明します。
9.2.2. パッケージの一覧表示
すべてのインストール済み および 利用可能なパッケージに関する情報を一覧表示するには、シェルプロンプトで以下を入力します。
yum
list
all
glob 表現に一致するインストール済み および 利用可能なパッケージを一覧表示するには、以下のコマンドを使用します。
yum list glob_expression…
例9.5 ABRT 関連パッケージの一覧
各種の ABRT アドオンとプラグインを持つパッケージは abrt-addon- か abrt-plugin- で始まります。これらのパッケージを一覧表示するには、シェルプロンプトで以下を入力します。ワイルドカード文字の前にバックスラッシュ文字を置くことでエスケープしていることに注意してください。
~]$ yum list abrt-addon\* abrt-plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages abrt-addon-ccpp.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-kerneloops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-pstoreoops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-python.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-vmcore.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-xorg.x86_64 2.1.11-35.el7 @rhel-7-server-rpms
installed
キーワードを使用して、システムにインストールされているパッケージを一覧表示するには、以下のコマンドを実行します。出力の右端の列には、パッケージを取得したリポジトリーが表示されます。
yum list installed glob_expression…
例9.6 インストール済み krb パッケージの一覧表示
以下の例では、krb で始まり、その後に正確に 1 文字とハイフンが続くインストール済みパッケージを一覧表示する方法を示しています。この方法では数字でバージョンが見分けられるので、特定コンポーネントの全バージョンを一覧表示したい場合に便利です。glob 表現全体を引用符で囲むことで適切な処理が確実になります。
~]$ yum list installed "krb?-*" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages krb5-libs.x86_64 1.13.2-10.el7 @rhel-7-server-rpms
有効なすべてのリポジトリーでインストール可能なパッケージを一覧表示するには、以下の形式のコマンドを使用します。
yum list available glob_expression…
例9.7 利用可能な gstreamer プラグインの一覧表示
たとえば、gstreamer とその後に plugin を含む名前の利用可能なパッケージを一覧表示するには、以下のコマンドを実行します。
~]$ yum list available gstreamer*plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Available Packages gstreamer-plugins-bad-free.i686 0.10.23-20.el7 rhel-7-server-rpms gstreamer-plugins-base.i686 0.10.36-10.el7 rhel-7-server-rpms gstreamer-plugins-good.i686 0.10.31-11.el7 rhel-7-server-rpms gstreamer1-plugins-bad-free.i686 1.4.5-3.el7 rhel-7-server-rpms gstreamer1-plugins-base.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.x86_64 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-good.i686 1.4.5-2.el7 rhel-7-server-rpms
リポジトリーの一覧表示
リポジトリーの ID、名前、使用中のシステム上で 有効な 各リポジトリーでのパッケージ数を一覧表示するには、以下のコマンドを実行します。
yum
repolist
これらのリポジトリーの詳細情報を一覧表示するには、-v
オプションを追加します。このオプションを有効にすると、各リポジトリーでファイル名や全体のサイズ、最終更新日、ベース URL といった情報が表示されます。別の方法としては、repoinfo
コマンドを使用して同じ出力を作成することもできます。
yum
repolist
-v
yum
repoinfo
有効および無効なリポジトリーの両方を表示するには、以下のコマンドを実行します。ステータスのコラムが出力リストに追加され、どのリポジトリーが有効になっているかが分かります。
yum
repolist
all
詳細な仕様については、リポジトリーの ID や名前、関連する glob 表現を引数として disabled
を渡すことができます。また、リポジトリーの ID、名前、関連する glob 表現を引数として指定することもできます。リポジトリー ID または名前が引数と完全に一致する場合は、enabled フィルターまたは disabled フィルターを通過しないリポジトリーであっても表示されることに注意してください。
9.2.3. パッケージ情報の表示
1 つ以上のパッケージに関する情報を表示するには、以下のコマンドを実行します (ここでは glob 表現も有効)。
yum info package_name…
package_name を、パッケージ名に置き換えます。
例9.8 abrt パッケージ情報の表示
abrt パッケージに関する情報を表示するには、以下を入力します。
~]$ yum info abrt Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages Name : abrt Arch : x86_64 Version : 2.1.11 Release : 35.el7 Size : 2.3 M Repo : installed From repo : rhel-7-server-rpms Summary : Automatic bug detection and reporting tool URL : https://fedorahosted.org/abrt/ License : GPLv2+ Description : abrt is a tool to help users to detect defects in applications and : to create a bug report with all information needed by maintainer to fix : it. It uses plugin system to extend its functionality.
yum info package_name
コマンドはコマンドと似ていますが rpm -q --info package_name
、RPM パッケージのインストール元である yum リポジトリーの名前に関する追加情報としてを提供します (出力の From repo:
行を参照)。
yumdb の使用
以下のコマンドを使用して、パッケージに関する代替情報や有用な情報について Yum データベースにクエリーすることもできます。
yumdb info package_name
このコマンドは、パッケージのチェックサム (および SHA-256 などのチェックサムを算出するためのアルゴリズム)、パッケージのインストール開始に使用されたコマンドラインのコマンド (存在する場合)、パッケージがシステムにインストールされた理由 (user
はユーザーがインストールしたことを、dep
は依存関係として取り入れたことを意味します) などのパッケージに関する追加情報を提供します。
例9.9 yum パッケージに関する情報を yumdb でクエリー
yum パッケージに関する追加情報を表示するには、以下を入力します。
~]$ yumdb info yum Loaded plugins: langpacks, product-id yum-3.4.3-132.el7.noarch changed_by = 1000 checksum_data = a9d0510e2ff0d04d04476c693c0313a11379053928efd29561f9a837b3d9eb02 checksum_type = sha256 command_line = upgrade from_repo = rhel-7-server-rpms from_repo_revision = 1449144806 from_repo_timestamp = 1449144805 installed_by = 4294967295 origin_url = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os/Packages/yum-3.4.3-132.el7.noarch.rpm reason = user releasever = 7Server var_uuid = 147a7d49-b60a-429f-8d8f-3edb6ce6f4a1
yumdb
コマンドの詳細は、yumdb(8) の man ページを参照してください。
9.2.4. パッケージのインストール
1 つのパッケージと、そのパッケージの依存関係でインストールされていないものをすべてインストールするには、root
で以下の形式のコマンドを入力します。
yum install package_name
複数パッケージを同時にインストールするには、その名前を引数として追加します。これには、root
で入力します。
yum install package_name package_name…
AMD64 マシンや Intel 64 マシンなどの multilib システムにパッケージをインストールする場合は、パッケージ名に .arch を追加して、パッケージのアーキテクチャーを指定できます (ただし、有効なリポジトリーで利用可能な場合のみ)。
yum install package_name.arch
例9.10 multilib システムでのパッケージのインストール
i686
アーキテクチャー用の sqlite パッケージをインストールするには、以下を入力します。
~]# yum install sqlite.i686
glob 表現を使用すると、名前が似ている複数のパッケージを迅速にインストールできます。root
として実行します。
yum install glob_expression…
例9.11 audacious の全プラグインのインストール
似た名前の複数のパッケージをインストールするには、glob 表現が便利です。audacious プラグインをすべてインストールするには、以下の形式でコマンドを使用します。
~]# yum install audacious-plugins-\*
パッケージ名と 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
コマンドでは、後続の引数で、ピリオドを使用してパッケージ名とアーキテクチャーを指定していると yum は解釈します。一方、install-nevra
では、yum で、name-epoch:version-release.architecture の形で引数を指定していることが必要になります。同様に、削除するパッケージを検索する際に、 yum remove-n
、yum remove-na
、yum remove-nevra
を使用できます。
named
バイナリーを含むパッケージをインストールする前に、ファイルがインストールされているのが bin/
ディレクトリーか sbin/
ディレクトリーか分からない場合は、glob 表現を付けて yum provides
コマンドを実行します。
~]# yum provides "*bin/named" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription- : manager 32:bind-9.9.4-14.el7.x86_64 : The Berkeley Internet Name Domain (BIND) DNS : (Domain Name System) server Repo : rhel-7-server-rpms Matched from: Filename : /usr/sbin/named
yum provides "*/file_name"
は、file_name が含まれるパッケージを検索するのに便利な方法です。
例9.12 インストールプロセス
以下の例は、yum を使用したインストールの概要を示しています。最新バージョンの httpd パッケージをダウンロードしてインストールするには、root
で以下のコマンドを実行します。
~]# yum install httpd Loaded plugins: langpacks, product-id, subscription-manager Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd.x86_64 0:2.4.6-13.el7 will be an update --> Processing Dependency: 2.4.6-13.el7 for package: httpd-2.4.6-13.el7.x86_64 --> Running transaction check ---> Package httpd-tools.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd-tools.x86_64 0:2.4.6-13.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved
上記のコマンドを実行した後、yum は必要なプラグインを読み込み、トランザクションチェックを実行します。このケースでは、httpd が既にインストールされています。インストール済みのパッケージが利用可能な最新バージョンよりも古いことから、これは更新されます。httpd が依存する httpd-tools にも同様のことが行われます。すると、トランザクションサマリーは以下のように表示されます。
================================================================================ Package Arch Version Repository Size ================================================================================ Updating: httpd x86_64 2.4.6-13.el7 rhel-x86_64-server-7 1.2 M Updating for dependencies: httpd-tools x86_64 2.4.6-13.el7 rhel-x86_64-server-7 77 k Transaction Summary ================================================================================ Upgrade 1 Package (+1 Dependent package) Total size: 1.2 M Is this ok [y/d/N]:
このステップでは、yum がインストールを確認するプロンプトを表示します。y
(yes) および N
(no) オプションのほかに、d
(ダウンロードのみ) を選択してパッケージをダウンロードしますが、直接インストールすることはできません。y
を選択すると、以下のメッセージが出て、インストールが正常に完了するまで続行します。
Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : httpd-tools-2.4.6-13.el7.x86_64 1/4 Updating : httpd-2.4.6-13.el7.x86_64 2/4 Cleanup : httpd-2.4.6-12.el7.x86_64 3/4 Cleanup : httpd-tools-2.4.6-12.el7.x86_64 4/4 Verifying : httpd-2.4.6-13.el7.x86_64 1/4 Verifying : httpd-tools-2.4.6-13.el7.x86_64 2/4 Verifying : httpd-tools-2.4.6-12.el7.x86_64 3/4 Verifying : httpd-2.4.6-12.el7.x86_64 4/4 Updated: httpd.x86_64 0:2.4.6-13.el7 Dependency Updated: httpd-tools.x86_64 0:2.4.6-13.el7 Complete!
ダウンロード済みのパッケージを、システム上のローカルディレクトリーからインストールするには、以下のコマンドを使用します。
yum localinstall
path
path を、インストールするパッケージのパスに置き換えます。
9.2.5. パッケージのダウンロード
例9.12「インストールプロセス」 にあるように、インストールプロセスのある時点で、インストールを確認する以下のメッセージが表示されます。
... Total size: 1.2 M Is this ok [y/d/N]: ...
d
オプションを指定すると、yum は、パッケージをインストールせずにダウンロードを行います。ダウンロードしたパッケージは、キャッシュディレクトリーのサブディレクトリー (デフォルトでは yum localinstall
) の 1 つに保存されます。ダウンロードしたパッケージは、キャッシュディレクトリーのサブディレクトリー (デフォルトでは /var/cache/yum/$basearch/$releasever/packages/
) のいずれかに保存されます。ダウンロードはバックグラウンドモードで続行されるため、yum を並行して他の操作に使用できます。
9.2.6. パッケージの削除
パッケージのインストールと同様に、yum を使用するとパッケージのアンインストールができます。特定のパッケージと、そのパッケージの依存関係パッケージをすべてアンインストールをするには、root
で以下のコマンドを実行します。
yum remove package_name…
複数のパッケージをインストールする場合と同様、コマンドに複数のパッケージ名を追加すると、一度に複数のパッケージを削除できます。
例9.13 複数パッケージの削除
totem を削除するには、シェルプロンプトで以下を入力します。
~]# yum remove totem
install
と同じように、remove
は以下の引数を取る ことができます。
- パッケージ名
- glob 表現
- ファイル一覧
- パッケージが提供する機能
Yum では、パッケージを削除して、その依存パッケージを残すことはできません。こうした動作は RPM でのみ実行可能であり、推奨されません。システムが機能しなくなる、またはアプリケーションに誤作動やクラッシュが生じる恐れがあるためです。
9.3. パッケージグループでの作業
パッケージグループは、たとえば システムツール や サウンドとビデオ などの共通の目的でサービスを行うパッケージの集合です。パッケージグループをインストールすると、依存パッケージも取得するため、時間が大幅に短縮できます。yum groups
コマンドは、yum のパッケージグループに作用するすべての操作をカバーするトップレベルのコマンドです。
9.3.1. パッケージグループの一覧表示
summary
オプションを使用すると、インストール済みのグループ数、利用可能なグループ数、利用可能な環境グループ数、インストール済みの言語グループ数、利用可能な言語グループ数が表示されます。
yum groups
summary
例9.14 yum groups summary の出力例
~]$yum
groups
summary
Loaded plugins: langpacks, product-id, subscription-manager Available Environment Groups: 12 Installed Groups: 10 Available Groups: 12
yum リポジトリーからすべてのパッケージグループを一覧表示するには、list
オプションを追加します。コマンドの出力は、グループ名でフィルターを設定できます。
yum group list glob_expression…
このコマンドで使用できる任意の引数がいくつかあります。たとえば、hidden
は、ユーザーに表示可能とされていないグループも一覧表示し、ids
はグループ ID を表示します。language
、environment
、installed
、available
などのオプションを追加して、出力を特定のグループタイプに制限することもできます。
特定のグループに含まれている必須およびオプションパッケージを一覧表示するには、以下のコマンドを使用します。
yum group info glob_expression…
例9.15 LibreOffice パッケージグループの情報表示
~]$ yum group info LibreOffice
Loaded plugins: langpacks, product-id, subscription-manager
Group: LibreOffice
Group-Id: libreoffice
Description: LibreOffice Productivity Suite
Mandatory Packages:
=libreoffice-calc
libreoffice-draw
-libreoffice-emailmerge
libreoffice-graphicfilter
=libreoffice-impress
=libreoffice-math
=libreoffice-writer
+libreoffice-xsltfilter
Optional Packages:
libreoffice-base
libreoffice-pyuno
上記の例で分かるように、このパッケージグループに含まれているパッケージは、以下の記号でマークされている状態に分けられます。
-
-
: パッケージはインストールされておらず、このパッケージグループではインストールされません。 -
+
: パッケージはインストールされていませんが、次のyum upgrade
またはyum group upgrade
にインストールされます。 -
=
: パッケージはインストールされており、パッケージグループの一部としてインストールされました。 -
記号なし: パッケージはインストールされていますが、パッケージグループとしてはインストールされませんでした。つまり、
yum group remove
はこれらのパッケージを削除しません。
この区別は、group_command
設定パラメーターがデフォルト設定の objects
に設定されている場合にのみ行われます。グループの一部として、または個別にパッケージをインストールしたかを yum で追跡したくない場合は、このパラメーターを異なる値に設定します。すると、"記号なし" パッケージと "=" パッケージが同じ意味になります。
yum group mark
コマンドを使用して、上記のパッケージの状態を変更できます。たとえば、yum group mark packages
によって、指定したグループのメンバーとして、指定のインストール済みパッケージをマークします。グループ更新に新しいパッケージをインストールしないようにするには、yum group mark blacklist
を使用します。yum group mark
の機能の詳細は、yum
(8) man ページを参照してください。
@^ 接頭辞を使用すると環境グループが特定でき、パッケージグループには @ のマークが付きます。yum
、group
、list
、info
、install
、または remove
を使用するとき、@group_name を渡してパッケージグループ @^group_name を指定するか、group_name を指定して両方を含めます。
9.3.2. パッケージグループのインストール
パッケージグループにはそれぞれ、名前とグループ ID (groupid) があります。パッケージグループの名前とグループ ID (括弧内に表示される) を一覧表示するには、以下のコマンドを入力します。
yum group list ids
例9.16 パッケージグループの名前と groupid の表示
パッケージグループ (例: KDE デスクトップ環境に関連するグループ) の名前または ID を検索するには、以下のコマンドを入力します。
~]$ yum group list ids kde\* Available environment groups: KDE Plasma Workspaces (kde-desktop-environment) Done
一部のグループは、設定されたリポジトリーの設定により非表示になっています。たとえば、サーバーで hidden
コマンドオプションを使用すると、非表示グループも表示されます。
~]$ yum group list hidden ids kde\* Loaded plugins: product-id, subscription-manager Available Groups: KDE (kde-desktop) Done
パッケージグループをインストールするには、group install
コマンドに正式なグループ名 (groupid は含めない) を渡します。root
として以下を入力します。
yum
group install
"group name"
groupid を使用してインストールすることもできます。root
として、以下のコマンドを実行します。
yum
group install
groupid
groupid、または引用付きグループ名の先頭に @ 記号を追加して install
コマンドに渡すことで、yum
と同じように group install
を実行できます。root
として以下を入力します。
yum
install
@group
group を、groupid、または引用符で囲んだグループ名に置き換えます。同じ論理が環境グループにも適用できます。
yum install @^group
例9.17 KDE Desktop グループをインストールする 4 つの方法
上記で説明したように、パッケージグループをインストールする方法は 4 つあります。KDE Desktop の場合、コマンドは以下のようになります。
~]# yum group install "KDE Desktop" ~]# yum group install kde-desktop ~]# yum install @"KDE Desktop" ~]# yum install @kde-desktop
9.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
例9.18 KDE Desktop
グループを削除する 4 つの方法
インストールする場合と同様に、パッケージグループを削除する方法は 4 つあります。KDE Desktop の場合、コマンドは以下のようになります。
~]# yum group remove "KDE Desktop" ~]# yum group remove kde-desktop ~]# yum remove @"KDE Desktop" ~]# yum remove @kde-desktop
9.4. トランザクション履歴の活用
yum history
コマンドを使用すると、yum のトランザクションのタイムライン、トランザクションの発生日時、影響を受けたパッケージ数、トランザクション成功の有無、RPM データベースがトランザクション間で変更されたかどうかといった情報を確認できます。さらに、このコマンドを使用すると、特定のトランザクションを元に戻す、またはやり直すことが可能です。すべての履歴データは /var/lib/yum/history/
ディレクトリーの 履歴 DB に保存されます。
9.4.1. トランザクションの一覧表示
最近発生した 20 件のトランザクションを一覧表示するには、root
で引数なしで yum history
を実行するか、以下のコマンドを実行します。
yum
history
list
すべてのトランザクションを表示するには、all
のキーワードを追加します。
yum
history
list
all
特定の範囲内のトランザクションのみを表示したい場合は、以下の形式でコマンドを使用します。
yum history list start_id..end_id
特定のパッケージに関するトランザクションのみを一覧表示することもできます。そのためには、パッケージ名か glob 表現を付けてコマンドを実行します。
yum history list glob_expression…
例9.19 最も古いトランザクション 5 件を表示する
yum history list
の出力では、最新のトランザクションがリストの上部に表示されます。履歴データベースにある最も古い 5 件のトランザクションに関する情報を表示するには、以下を入力します。
~]# yum history list 1..5 Loaded plugins: langpacks, product-id, subscription-manager ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 5 | User <user> | 2013-07-29 15:33 | Install | 1 4 | User <user> | 2013-07-21 15:10 | Install | 1 3 | User <user> | 2013-07-16 15:27 | I, U | 73 2 | System <unset> | 2013-07-16 15:19 | Update | 1 1 | System <unset> | 2013-07-16 14:38 | Install | 1106 history list
yum history list
コマンドのすべての形式で、以下のコラムで構成される各行を含む表形式出力を生成します。
-
ID
: 特定のトランザクションを識別する整数値です。 -
Login user
: トランザクションが開始したログインセッションのユーザー名。通常、この情報は、Full Name <username>
形式で表示されます。ユーザーが実行しなかったトランザクションに関しては (システムの自動更新など)、代わりにSystem <unset>
が使用されます。 -
Date and time
: トランザクションが発生した日時です。 -
Action(s)
: 表9.1「Action フィールドの値」 の説明通りに、トランザクション中に実行された動作の一覧です。 -
Altered
: 表9.2「Altered フィールドの値」 の説明通りに、トランザクションにより影響を受けたパッケージ数、場合によっては追加情報も含まれます。
表9.1 Action フィールドの値
Action | 省略形 | 詳細 |
---|---|---|
|
| 1 つ以上のパッケージが旧バージョンにダウングレードされました。 |
|
| 1 つ以上のパッケージが削除されました。 |
|
| 1 つ以上の新しいパッケージがインストールされました。 |
|
| 1 つ以上のパッケージが廃止として記録されました。 |
|
| 1 つ以上のパッケージが再インストールされました。 |
|
| 1 つ以上のパッケージが新しいバージョンに更新されました。 |
表9.2 Altered フィールドの値
記号 | 詳細 |
---|---|
|
トランザクションが終了する前に、 |
|
トランザクションが終了した後に、 |
| トランザクションは失敗して終了しました。 |
| トランザクションは正常に終了しましたが、yum はゼロ以外の終了コードを返しました。 |
| トランザクションは正常に終了しましたが、エラーまたは警告が表示されました。 |
|
トランザクションは正常に終了しましたが、 |
|
トランザクションは正常に終了しましたが、 |
インストール済みパッケージの rpmdb
または yumdb
データベースのコンテンツを現在使用されている rpmdb
または yumdb
データベースに同期するには、以下を入力します。
yum
history
sync
現在使用している履歴データベースに関する全体的な統計数字を表示するには、以下のコマンドを使用します。
yum
history
stats
例9.20 yum history stats の出力例
~]# yum history stats Loaded plugins: langpacks, product-id, subscription-manager File : //var/lib/yum/history/history-2012-08-15.sqlite Size : 2,766,848 Transactions: 41 Begin time : Wed Aug 15 16:18:25 2012 End time : Wed Feb 27 14:52:30 2013 Counts : NEVRAC : 2,204 NEVRA : 2,204 NA : 1,759 NEVR : 2,204 rpm DB : 2,204 yum DB : 2,204 history stats
Yum を使用すると、過去に発生したすべてのトランザクションのサマリーを表示することもできます。root
で以下の形式のコマンドを実行します。
yum
history
summary
特定の範囲内でのトランザクションのみを表示するには、以下を入力します。
yum history summary start_id..end_id
yum history list
コマンドと同様に、パッケージの名前または glob 表現を指定することで、特定のパッケージに関するトランザクションのサマリーを表示できます。
yum history summary glob_expression…
例9.21 最新のトランザクション 5 件のサマリー
~]# yum history summary 1..5 Loaded plugins: langpacks, product-id, subscription-manager Login user | Time | Action(s) | Altered ------------------------------------------------------------------------------- Jaromir ... <jhradilek> | Last day | Install | 1 Jaromir ... <jhradilek> | Last week | Install | 1 Jaromir ... <jhradilek> | Last 2 weeks | I, U | 73 System <unset> | Last 2 weeks | I, U | 1107 history summary
yum history summary
コマンドのすべての形式で、yum history list
の出力に似た簡略化された表形式出力を生成します。
上記のように、yum history list
および yum history summary
とも、トランザクション向けに設定されています。特定のパッケージに関連するトランザクションのみを表示することができますが、パッケージバージョンのような重要な詳細は表示されません。パッケージに関連するトランザクションを一覧表示するには、root
で以下のコマンドを実行します。
yum history package-list glob_expression…
例9.22 パッケージ履歴の追跡
たとえば、subscription-manager および関連パッケージの履歴を調べるには、シェルプロンプトで以下を入力します。
~]# yum history package-list subscription-manager\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ID | Action(s) | Package ------------------------------------------------------------------------------- 2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE 2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE 1 | Install | subscription-manager-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64 history package-list
上記の例では、初期のシステムインストール時に subscription-manager、subscription-manager-firstboot、subscription-manager-gui の 3 パッケージがインストールされています。3 つ目のトランザクションでは、これらの全パッケージはバージョン 1.10.11 から 1.10.17 に更新されています。
9.4.2. トランザクションの検証
単一のトランザクションのサマリーを表示するには、root
で、以下の形式で yum history summary
コマンドを使用します。
yum
history
summary
id
ここでは、id はトランザクションの ID を表します。
特定のトランザクションを詳しく調べる場合は、root
で以下のコマンドを実行します。
yum
history
info
id…
id の引数はオプションです。これを省略する場合は、yum は自動的に最後のトランザクションを使用します。複数のトランザクションを指定する場合は、範囲を指定することもできます。
yum history info start_id..end_id
例9.23 yum history info の出力例
以下は、2 つのトランザクションに関する出力のサンプルです。それぞれ新しいパッケージを 1 つインストールしています。
~]# yum history info 4..5 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Transaction ID : 4..5 Begin time : Mon Dec 7 16:51:07 2015 Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9 End time : 17:18:49 2015 (27 minutes) End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5 User : Maxim Svistunov <msvistun> Return-Code : Success Command Line : install tigervnc-server.x86_64 Command Line : reinstall tigervnc-server Transaction performed with: Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpms Packages Altered: Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms history info
また、トランザクション時に使用された設定オプション、特定のパッケージをインストールしたリポジトリー、その理由などの追加情報も閲覧できます。特定のトランザクションに関して入手可能な追加情報を表示する場合は、root
としてシェルプロンプトで以下を入力します。
yum
history
addon-info
id
yum history info
と同様に、id が指定されていない場合、yum は自動的に最新のトランザクションを使用します。別の方法として、最新のトランザクションを参照するには、last
キーワードを使用することもできます。
yum
history
addon-info
last
例9.24 yum
history
addon-info
の出力例
履歴の 4 番目のトランザクションでは、yum history addon-info
コマンドは以下の出力を提供します。
~]# yum history addon-info 4 Loaded plugins: langpacks, product-id, subscription-manager Transaction ID: 4 Available additional history information: config-main config-repos saved_tx history addon-info
yum
history
addon-info
コマンドの出力では、3 種類の情報が表示されます。
-
config-main
: トランザクション時に使用された yum のグローバルオプション。グローバルオプションの変更方法は 「[main] オプションの設定」 を参照してください。 -
config-repos
: 個々の yum リポジトリー用のオプションです。個々のリポジトリー用のオプションを変更する方法は 「[repository] オプションの設定」 を参照してください。 -
saved_tx
: 別のマシンでトランザクションを繰り返すためにyum load-transaction
コマンドで使用できるデータ (下記参照)。
選択した種類の追加情報を表示するには、root
で以下のコマンドを実行してください。
yum
history
addon-info
id information
9.4.3. トランザクションを元に戻す/繰り返す
トランザクション履歴の確認以外に、yum history
コマンドは選択したトランザクションを元に戻す、または繰り返す方法を提供します。トランザクションを元に戻すには、root
で次のコマンドを実行します。
yum
history
undo
id
特定のトランザクションを繰り返すには、root
で次のコマンドを実行します。
yum
history
redo
id
どちらのコマンドでも last
キーワードを使用して、最新のトランザクションを元に戻す、または繰り返すことができます。
yum history undo
および yum history redo
コマンドはいずれも、トランザクション中に実行されたステップのみを元に戻すか、繰り返すことに注意してください。このトランザクションで新しいパッケージがインストールされた場合に、yum history undo
コマンドを実行すると、今回インストールしたパッケージがアンインストールされます。逆に、このトランザクションでパッケージがアンインストールされた場合は、このコマンドにより再度インストールされます。またこのコマンドは、(古いパッケージが引き続き利用可能な場合に) 更新済みパッケージをすべて以前のバージョンにダウングレードする試みも行います。
複数の同一システムを管理する場合、yum を使用すると、1 つのシステムでトランザクションを実行して、そのトランザクションの詳細をファイルに格納し、テスト期間の終了後に残りのシステムで同じトランザクションを繰り返すことができます。トランザクションの詳細をファイルに保存するには、root
でシェルプロンプトに以下を入力します。
yum -q history addon-info id saved_tx > file_name
このファイルを目的のシステムにコピーしたら、root
で以下のコマンドを使用してトランザクションを繰り返すことができます。
yum load-transaction file_name
不足しているパッケージまたは rpmdb バージョン load-transaction
を無視するように設定できます。これらの設定オプションの詳細は、yum.conf
(5) man ページを参照してください。
9.4.4. 新しいトランザクション履歴の開始
Yum は単一の SQLite データベースファイルにトランザクション履歴を保存します。新しいトランザクションの履歴を開始するには、root
で以下のコマンドを実行します。
yum
history
new
これにより、/var/lib/yum/history/
ディレクトリーに新しい空のデータベースファイルが作成されます。古いトランザクション履歴は保存されますが、新しいデータベースファイルがディレクトリーにある限りアクセスすることはできません。
9.5. Yum と Yum リポジトリーの設定
専門知識を深めるために、Red Hat System Administration III (RH254) トレーニングコースと RHCSA Rapid Track (RH199) トレーニングコースを受講することをお勧めします。
yum および関連ユーティリティーの設定情報は /etc/yum.conf
に存在します。このファイルには、必須の [main]
セクションが 1 つあり、ここで全体に影響を与える yum オプションを設定できます。また、[repository]
セクションを 1 つ以上追加して、リポジトリー固有のオプションを設定することもできます。ただし、.repo
ディレクトリーにある、新規または既存の /etc/yum.repos.d/
ファイルに個々のリポジトリーを定義することが推奨されます。/etc/yum.conf
ファイルの個別のセクションで定義し [repository]
た値は、[main]
セクションに設定した値をオーバーライドします。
このセクションでは以下の方法を紹介します。
-
/etc/yum.conf
設定ファイルの[main]
セクションを編集して yum のグローバルオプションを設定する -
/etc/yum.repos.d/
ディレクトリー内の[repository]
セクション/etc/yum.conf
および.repo
ファイルを編集して、個々のリポジトリーにオプションを設定します。 -
/etc/yum.repos.d/
ディレクトリー内の/etc/yum.conf
およびファイル内の yum 変数を使用し、動的バージョンおよびアーキテクチャーの値が適切に処理されるようにします。 - コマンドラインで yum リポジトリーを追加、有効、無効にする方法
- カスタムの yum リポジトリーを設定する方法
9.5.1. [main] オプションの設定
/etc/yum.conf
設定ファイルには、[main]
セクションが 1 つだけ含まれます。本セクションにあるキー値ペアの中には、yum の動作に影響を与えるものもあれば、yum がリポジトリーを処理する方法に影響を与えるものもあります。
/etc/yum.conf
の [main]
セクションの下に、多くのオプションを追加できます。
/etc/yum.conf
設定ファイルの例を以下に示します。
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 [comments abridged] # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
以下は、[main]
セクションで最もよく使用されるオプションです。
assumeyes
=値assumeyes
オプションは、yum が重要なアクションに関する確認を行うかどうかを決定します。value を、以下のいずれかで置き換えます。0
: (デフォルト)。yum は、実行する重要な動作の確認を行います。1
:yum
は、実行する重要な動作の確認を行いません。assumeyes=1
が設定されている場合、yum はコマンドラインオプション-y
と--assumeyes
と同じように動作します。cachedir
=ディレクトリーこのオプションを使用して、yum がキャッシュおよびデータベースファイルを保存するディレクトリーを設定します。directory をディレクトリーへの絶対パスで置き換えます。デフォルトでは、yum のキャッシュディレクトリーは
/var/cache/yum/$basearch/$releasever/
です。$basearch
および$releasever
yum 変数の説明は、「yum 変数の使用」 を参照してください。debuglevel
=値-
このオプションは、yum が生成するデバッグ出力の詳細を指定します。ここでは、value は
1
から10
までの整数になります。debuglevel
値を高く設定すると、yum がより詳細なデバッグ出力を表示します。debuglevel=2
はデフォルトで、debuglevel=0
はデバッグ出力を無効にします。 exactarch
=値このオプションを使用すると、インストール済みのパッケージを更新する際に、yum が正確なアーキテクチャーを考慮するように設定できます。value を以下のいずれかで置き換えます。
0
: パッケージの更新時には正しいアーキテクチャーを考慮に入れて実行しません。1
(デフォルト値): パッケージの更新時に正しいアーキテクチャーを考慮します。このように設定すると、yum が、64 ビットアーキテクチャーのシステムにインストールされているパッケージの更新に、32 ビットアーキテクチャーのパッケージを使用しません。exclude
=package_name more_package_names-
exclude
オプションでは、インストールまたはシステム更新の際にキーワードでパッケージを除外できます。除外する複数のパッケージの一覧を表示するには、スペースで区切ったパッケージの一覧を引用符で囲みます。ワイルドカードを使用したシェル glob 表現 (*
や?
など) を使用できます。 gpgcheck
=値gpgcheck
オプションを指定して、GPG 著名チェックをパッケージで行う必要があるかどうかを指定します。value を以下のいずれかで置き換えます。0
: インストールされるローカルパッケージなど、全リポジトリー内のパッケージでの GPG 署名確認を無効にします。1
(デフォルト): インストールされるローカルパッケージなど、全リポジトリーのすべてのパッケージで GPG 署名確認を有効にします。gpgcheck
が有効だと、すべてのパッケージ署名が確認されます。このオプションが
[main]
ファイルの/etc/yum.conf
セクションで設定されている場合は、全リポジトリーに対して GPG 確認ルールが設定されます。ただし、個々のリポジトリーにgpgcheck=value
を設定することもできます。つまり、あるリポジトリーで GPG チェックを有効にしつつ、別のレポジトリーで無効にすることができます。一致する.repo
ファイルで個別のレポジトリーにgpgcheck=value
を設定すると、/etc/yum.conf
が存在する場合にデフォルトが上書きされます。group_command
=値yum group install
、yum group upgrade
、およびyum group remove
コマンドがパッケージグループを処理する方法を指定するには、group_command
オプションを使用します。value を、以下のいずれかで置き換えます。simple
: パッケージグループのすべてのメンバーをインストールします。以前にインストールされたパッケージのみを更新し、その間にグループに追加されたパッケージはインストールしません。compat
:simple
に似ていますが、yum upgrade
は前回の更新以降にグループに追加されたパッケージもインストールします。objects
: デフォルト) このオプションでは、yum は以前にインストールされたグループを追跡し、グループの一部としてインストールされたパッケージと、個別にインストールされたパッケージを区別します。例9.15「LibreOffice パッケージグループの情報表示」を参照してください。group_package_types
=package_type more_package_types-
yum
、group
、install
コマンドが呼び出されたときにインストールされるパッケージのタイプ (オプション、デフォルト、必須) を指定することができます。default および mandatory のパッケージタイプがデフォルトで選択されます。 history_record
=値このオプションを使用すると、yum はトランザクション履歴を記録します。value を、以下のいずれかで置き換えます。
0
: yum はトランザクションの履歴エントリーを記録しません。1
(デフォルト値): yum はトランザクションの履歴エントリーを記録します。この操作により、ある程度のディスク領域が使用され、トランザクションの時間が少し長くなりますが、過去の操作に関する多くの情報が提供されます。これは、yum
history
コマンドで表示できます。history_record=1
がデフォルト値です。yum
history
コマンドの詳細は、「トランザクション履歴の活用」 を参照してください。注記yum は履歴記録を使用して、yum 以外で行われた
rpmdb
データベースへの変更を検出します。変更が検出されると、yum は警告を表示し、rpmdb
の変更によって起こり得る問題を自動的に検索します。history_record
がオフになっていると、yum はこのような変更を検出できず、自動チェックは実行されません。installonlypkgs
=スペース区切りのリスト (パッケージ)ここでは、yum でインストールを行い、更新を行わないパッケージの一覧をスペースで区切って提供できます。デフォルトでインストールのみに設定されているパッケージの一覧は、
yum.conf
(5) man ページを参照してください。installonlypkgs
ディレクティブを/etc/yum.conf
に追加する場合は、yum.conf
(5)のinstallonlypkgs
セクションに一覧表示されているものを含め、インストールのみすべきパッケージを すべて 表示してください。特に (デフォルトで) カーネルパッケージが常にinstallonlypkgs
で一覧表示され、installonly_limit
の値が常に2
よりも大きく設定され、デフォルトが起動に失敗した場合にバックアップカーネルを常に利用可能にするようにしてください。
installonly_limit
=値このオプションは、
installonlypkgs
ディレクティブにリストされている多くのパッケージを同時にインストールできる数を設定します。installonlypkgs
に一覧表示されている単一のパッケージに同時にインストールできるようにバージョンの最大数を示す整数に値を置き換えます。`installonlypkgs
ディレクティブのデフォルトには複数のカーネルパッケージが含まれています。そのため、installonly_limit
の値を変更すると、インストール済みの単一のカーネルパッケージのバージョンの最大数にも影響することに注意してください。/etc/yum.conf
のデフォルト値はinstallonly_limit=3
で、許容される最小値はinstallonly_limit=2
です。installonly_limit=1
に設定すると yum によって実行中のカーネルが削除されるため、設定することはできません。installonly_limit=1
を使用すると、yum は失敗します。installonly_limit=2
を使うことで、1 つのバックアップカーネルが利用できるようにします。ただし、2 つのバックアップカーネルを利用できるようにするためにも、デフォルト設定installonly_limit=3
を使用し続けることが推奨されます。keepcache
=値keepcache
オプションはインストールに成功した後に、yum がヘッダーのキャッシュを維持するかどうかを決めます。値は、以下のいずれかになります。0
: (デフォルト)。インストールの成功後は、ヘッダーとパッケージのキャッシュを保持しません。1
: インストールの成功後も、キャッシュを保持します。logfile
=file_name-
ログ出力の場所を指定するため、file_name を、yum がログ出力を書き込むファイルへの絶対パスで置き換えます。デフォルトでは、yum は
/var/log/yum.log
にログを記録します。 max_connenctions
=数値- ここでの value は、同時接続の最大数を表します。デフォルトは 5 です。
multilib_policy
=値multilib_policy
は、複数のアーキテクチャーバージョンがパッケージのインストールに利用できる場合に、インストール動作を設定します。ここで、value は以下を表します。best
: このシステムに最適なアーキテクチャーをインストールします。たとえば、AMD64 システムでmultilib_policy=best
を設定すると、yum は全パッケージの 64 ビットバージョンをインストールします。all
: 常に全パッケージ用の可能なあらゆるアーキテクチャーをインストールします。AMD64 システム上でmultilib_policy
をall
に設定すると、yum はパッケージの i686 および AMD64 が利用可能であれば両バージョンをインストールします。obsoletes
=値obsoletes
オプションでは、更新中に廃止プロセス論理を有効化します。あるパッケージのスペックファイルで、別のパッケージを廃止することを宣言すると、廃止宣言したパッケージのインストール時に、廃止宣言されたパッケージが、廃止宣言したパッケージに置き換えられます。たとえば、パッケージ名が変更された場合などに廃止が宣言されます。value を、以下のいずれかで置き換えます。0
: 更新の実行時に yum の廃止処理ロジックを無効にします。1
: (デフォルト)。更新の実行時に yum の廃止処理ロジックを有効にします。plugins
=値これは、yum プラグインを有効または無効にするグローバルスイッチです。value は以下のいずれかになります。
0
: yum のプラグインをグローバルで無効にします。重要一部のプラグインは重要な yum サービスを提供するため、すべてのプラグインを無効にすることは推奨されません。特に、product-id および subscription-manager プラグインは、証明書ベースの
Content Delivery Network
(CDN) のサポートを提供します。プラグインをグローバルで無効にするオプションは便利なオプションとして提供されていますが、通常は yum に潜在的な問題があると判断された場合にのみ使用することが推奨されます。1
(デフォルト値): すべての yum プラグインを全体的に有効にします。enabled=0
では、そのプラグインの設定ファイルにplugins=1
を設定して、特定の yum プラグインを無効にすることができます。yum の各種プラグインの詳細は 「yum のプラグイン」 を参照してください。プラグインの制御に関する詳細は 「yum プラグインを有効、設定、および無効にする方法」 を参照してください。
reposdir
=ディレクトリー-
ここでの directory は
.repo
ファイルがあるディレクトリーへの絶対パスです。すべての.repo
ファイルには、リポジトリー情報 (/etc/yum.conf
の[repository]
セクションと同様) が含まれています。yum は.repo
ファイルおよび[repository]
ファイルの/etc/yum.conf
セクションからすべてのリポジトリー情報を収集し、トランザクションに使用するリポジトリーのマスター一覧を作成します。reposdir
が設定されていない場合には、yum はデフォルトのディレクトリー/etc/yum.repos.d/
を使用します。 retries
=値-
このオプションは、エラーを返す前に yum がファイルの取得を試行する回数を設定します。値は整数
0
以上です。値を0
に設定すると、yum はその試行を何度も続けます。デフォルト値は10
です。
利用可能な [main]
オプションの一覧は、yum.conf(5) の man ページの [main] OPTIONS
セクションを参照してください。
9.5.2. [repository] オプションの設定
[repository]
セクションでは、個別の yum リポジトリーを定義できます。レポジトリー は、my_personal_repo
(スペースは使用不可) などの一意のリポジトリー ID になります。競合を回避するために、カスタムリポジトリーには、Red Hat リポジトリーで使用されている名前を使用しないでください。
[repository]
セクションでは、少なくとも以下の例のような形式が必要になります。
[repository] name=repository_name baseurl=repository_url
すべての [repository]
セクションには、以下のディレクティブを含める必要があります。
name
=repository_name- repository_name は、人間が判読可能な、リポジトリーを説明する文字列になります。
baseurl
=repository_urlrepository_url を、リポジトリーの repodata ディレクトリーが置かれているディレクトリーへの URL に置き換えます。
-
リポジトリーが HTTP にある場合は、以下を使用します。
http://path/to/repo
-
リポジトリーが FTP にある場合は、次のコマンドを使用します。
ftp://path/to/repo
-
リポジトリーがマシンのローカルにある場合は、以下を使用します。
file:///path/to/local/repo
特定のオンラインリポジトリーでベーシック HTTP 認証が必要な場合は、
username:password@link
として URL にプリペンドして、ユーザー名とパスワードを指定できます。たとえば、http://www.example.com/repo/ にあるリポジトリーで、ユーザー名「user」およびパスワード「password」が必要となる場合は、baseurl
リンクはhttp://user:password@www.example.com/repo/
として指定できます。通常この URL は以下のような HTTP リンクになります。
baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
yum は、URL の
$releasever
、$arch
、および$basearch
変数を常に展開することに注意してください。yum 変数の詳細は 「yum 変数の使用」 を参照してください。
-
リポジトリーが HTTP にある場合は、以下を使用します。
その他の便利な [repository]
ディレクティブは、以下のとおりです。
enabled
=値このオプションを使用すれば、yum が特定のリポジトリーを使用するか無視するかを簡単に設定できます。value は、以下のいずれかになります。
0
: 更新およびインストールの実行時には、パッケージソースとしてこのリポジトリーを含めません。これはリポジトリーを迅速に有効または無効にする簡単な方法です。更新またはインストールには無効にしているリポジトリーから、単一パッケージが欲しい場合に便利です。1
: パッケージソースとしてこのリポジトリーを含めます。リポジトリーのオンとオフは、
--enablerepo=repo_name
または--disablerepo=repo_name
オプションのいずれかに渡すかyum
、PackageKit ユーティリティーのAdd/Remove Software
ウィンドウから実行することもできます。async
=値リポジトリーパッケージの並行ダウンロードを制御します。値は、以下のいずれかになります。
auto
(デフォルト): 可能な場合、並行ダウンロードを使用します。つまり、失敗を回避するために yum はプラグインが作成したリポジトリーについては自動的にこれを無効にします。on
: リポジトリーの並行ダウンロードが有効になります。off
: リポジトリーの並行ダウンロードが無効になります。
他にも多くの [repository]
オプションがあります。このうちのいくつかは、[main]
オプションと同一形式、同一機能になります。完全な一覧は、yum.conf(5) man ページの [repository] OPTIONS
セクションを参照してください。
例9.25 /etc/yum.repos.d/redhat.repo ファイルのサンプル
/etc/yum.repos.d/redhat.repo
ファイルの例を以下に示します。
# # Red Hat Repositories # Managed by (rhsm) subscription-manager # [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/os enabled = 1 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-source-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Source RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/source/SRPMS enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-debug-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Debug RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/debug enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem
9.5.3. yum 変数の使用
yum
コマンドおよびすべての yum 設定ファイル (/etc/yum.repos.d/
ディレクトリー内の /etc/yum.conf
およびすべての .repo
ファイル)で、以下の組み込み変数を使用できます。
$releasever
-
この変数を使用すると、Red Hat Enterprise Linux のリリースバージョンを参照できます。yum は、
/etc/yum.conf
設定ファイルのdistroverpkg=value
行の$releasever
からの値を取得します。/etc/yum.conf
にそのような行がない場合、yum はredhat-release
ファイルを提供するredhat-releaseproduct
パッケージからバージョン番号を取得することで正しい値を推測します。 $arch
-
この変数を使用して、Python の
os.uname()
関数を呼び出す時に返り値としてシステムの CPU アーキテクチャーを参照できます。$arch
の有効な値には、i586
、i686
、 およびx86_64
が含まれます。 $basearch
-
$basearch
を使用すると、システムのベースアーキテクチャーを参照できます。たとえば、i686 および i586 の両マシンにはi386
のベースアーキテクチャーがあり、AMD64 および Intel 64 の両マシンにはx86_64
のベースアーキテクチャーがあります。 $YUM0-9
-
これら 10 個の変数は、それぞれ同じ名前を持つシェル環境変数の値に置換されます。これら変数のいずれかが (たとえば
/etc/yum.conf
で) 参照され、同じ名前を持つシェル環境変数が存在しない場合、設定ファイルの変数は置換されません。
カスタム変数の定義、既存の変数値の上書きを行うには、$
ディレクトリー内に変数と同じ名前を持つファイルを作成して (/etc/yum/vars/
記号はなし) 、1 行目に希望する値を追加します。
たとえば多くの場合、リポジトリーの詳細にはオペレーティングシステムの名前が含まれます。$osname
と呼ばれる新しい変数を定義するには、1 行目に Red Hat Enterprise Linux の名前を持つ新しいファイルを作成して、/etc/yum/vars/osname
として保存します。
~]# echo "Red Hat Enterprise Linux 7" > /etc/yum/vars/osname
.repo
ファイルでは、Red Hat Enterprise Linux 7 の代わりに以下を使用することができます。
name=$osname $releasever
9.5.4. 現在の設定の表示
yum グローバルオプションの現在の値 (/etc/yum.conf
ファイルの [main]
セクションで指定されているオプション) を表示するには、コマンドラインオプションなしで yum-config-manager
コマンドを実行します。
yum-config-manager
別の設定セクションの内容を一覧表示するには、以下の形式でコマンドを実行します。
yum-config-manager
section…
glob 表現を使用して、適合する全セクションの設定を表示することもできます。
yum-config-manager glob_expression…
例9.26 main セクションの設定を表示する
すべての設定オプションとそれらに対応する値を一覧表示するには、シェルプロンプトで以下を入力します。
~]$ yum-config-manager main \* Loaded plugins: langpacks, product-id, subscription-manager ================================== main =================================== [main] alwaysprompt = True assumeyes = False bandwith = 0 bugtracker_url = https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%206&component=yum cache = 0 [output truncated]
9.5.5. yum リポジトリーの追加、有効化、および無効化
専門知識を深めるには、Red Hat System Administration III (RH254) トレーニングコースの受講をお勧めします。
「[repository] オプションの設定」 では、yum リポジトリーの定義に使用できるさまざまなオプションを説明しています。本セクションでは、yum-config-manager
コマンドを使用してリポジトリーを追加、もしくは有効または無効にする方法を説明します。
システムが Red Hat Subscription Management で証明書ベース Content Delivery Network
(CDN) に登録されると、Red Hat Subscription Manager ツールを使用して /etc/yum.repos.d/redhat.repo
ファイル内のリポジトリーを管理します。
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
ファイルへのリンクになります。
例9.27 example.repo の追加
http://www.example.com/example.repo にあるリポジトリーを追加するには、シェルプロンプトで以下を入力します。
~]# yum-config-manager --add-repo http://www.example.com/example.repo Loaded plugins: langpacks, product-id, subscription-manager adding repo from: http://www.example.com/example.repo grabbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repo example.repo | 413 B 00:00 repo saved to /etc/yum.repos.d/example.repo
yum リポジトリーの有効化
特定のリポジトリーを有効にするには、root
で以下のコマンドを入力します。
yum-config-manager
--enable
repository…
ここでの repository は一意のリポジトリー ID になります (利用可能なリポジトリー ID を一覧表示するには yum repolist all
を使用)。別の方法では、glob 表現を使用すると、一致するすべてのリポジトリーを有効にできます。
yum-config-manager --enable glob_expression…
例9.28 /etc/yum.conf のカスタムセクションで定義されるリポジトリーを有効にする
[example]
、[example-debuginfo]
、[example-source]
セクションで定義したリポジトリーを有効にするには、以下を入力します。
~]# yum-config-manager --enable example\* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
例9.29 すべてのリポジトリーの有効化
/etc/yum.conf
ファイルと /etc/yum.repos.d/
ディレクトリーで定義されたすべてのリポジトリーを有効にするには、以下を入力します。
~]# yum-config-manager --enable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功すると、yum-config-manager --enable
コマンドは現在のリポジトリー設定を表示します。
yum リポジトリーの無効化
yum リポジトリーを無効にするには、root
で以下のコマンドを実行します。
yum-config-manager
--disable
repository…
ここでの repository は一意のリポジトリー ID になります (利用可能なリポジトリー ID を一覧表示するには yum repolist all
を使用)。yum-config-manager --enable
と同様に、glob 表現を使用して、一致するすべてのリポジトリーを同時に無効にできます。
yum-config-manager --disable glob_expression…
例9.30 すべてのリポジトリーの無効化
/etc/yum.conf
ファイルと /etc/yum.repos.d/
ディレクトリーで定義されたすべてのリポジトリーを無効にするには、以下を入力します。
~]# yum-config-manager --disable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
成功すると、yum-config-manager --disable
コマンドは現在の設定を表示します。
9.5.6. yum リポジトリーの作成
yum リポジトリーを設定するには、以下を行います。
createrepo パッケージをインストールします。
# yum install createrepo
新しいリポジトリーのパッケージをすべて 1 つのディレクトリー (
/tmp/local_repo/
など) にコピーします。cp /your/packages/*.rpm /tmp/local_repo/
リポジトリーの実行を作成するには、以下を行います。
createrepo /tmp/local_repo/
これにより、yum リポジトリーから必要なメタデータが、新たに作成したサブディレクトリー
repodata
に作成されます。このリポジトリーを yum で利用できるようになりました。このリポジトリーは HTTP または FTP プロトコルで共有でき、ローカルマシンから直接参照できます。yum リポジトリーを設定する方法は 「[repository] オプションの設定」 セクションを参照してください。
注記リポジトリーの URL を構築する際には、このディレクトリーにはメタデータしか含まれないため、
/mnt/local_repo/repodata
ではなく、/mnt/local_repo
を参照してください。実際の yum パッケージは/mnt/local_repo
にあります。
9.5.6.1. 作成した yum リポジトリーへのパッケージの追加
作成した yum リポジトリーにパッケージを追加するには、以下を行います。
リポジトリーディレクトリー (
/tmp/local_repo/
など) に新しいパッケージをコピーします。cp /your/packages/*.rpm /tmp/local_repo/
メタデータで新たに追加されたパッケージを反映するには、以下を実行します。
createrepo --update /tmp/local_repo/
任意: 新たに更新したリポジトリーで yum コマンドを使用している場合は、以下のコマンドを実行します。
yum clean expire-cache
9.5.7. Optional および Supplementary リポジトリーの追加
Optional および Supplementary のサブスクリプションチャンネルでは、オープンソースのライセンス付きソフトウェア (Optional チャンネル) と商用ライセンス付きソフトウェア (Supplementary チャンネル) をカバーする Red Hat Enterprise Linux 用の追加ソフトウェアパッケージが提供されます。
Optional および Supplementary チャンネルをサブスクライブする前に、「対象範囲の詳細」を参照してください。これらのチャンネルからパッケージをインストールする場合は、Red Hat カスタマーポータルの記事「証明書ベースの管理を使用して、Optional および Supplementary チャンネル、-devel パッケージにアクセスする方法」で説明されている手順を行ってください。
9.6. yum のプラグイン
yum は、その操作を拡張し、強化するプラグインを提供します。特定のプラグインが、デフォルトでインストールされています。yum コマンドを呼び出すたびに、読み込まれ、アクティブになっているプラグインがあれば、yum
コマンドがそれを通知します。以下に例を示します。
~]# yum info yum Loaded plugins: langpacks, product-id, subscription-manager [output truncated]
Loaded plugins
に続くプラグイン名は、--disableplugin=plugin_name
オプションに提供できる名前です。
9.6.1. yum プラグインを有効、設定、および無効にする方法
yum プラグインを有効にするには、plugins=
で始まる行がの /etc/yum.conf
の [main]
セクションにあり、その値が 1
であることを確認し ます。
plugins=1
すべてのプラグインを無効にするには、この行を plugins=0
に変更します。
一部のプラグインは重要な yum サービスを提供するため、すべてのプラグインを無効にすることは推奨されません。その中でも product-id プラグインおよび subscription-manager プラグインは、証明書ベースの Content Delivery Network
(CDN) への対応に必要です。プラグインをグローバルで無効にするオプションは便利なオプションとして提供されていますが、通常は yum に潜在的な問題があると判断された場合にのみ使用することが推奨されます。
/etc/yum/pluginconf.d/
ディレクトリーには、インストールしているすべてのプラグインに対する設定ファイルがあります。このファイルに、プラグイン固有のオプションを設定できます。たとえば、以下のように aliases プラグインの aliases.conf
設定ファイルがあるとします。
[main] enabled=1
/etc/yum.conf
と同じように、プラグイン設定ファイルには常に [main]
セクションが含まれます。このセクションでは、enabled=
オプションで、yum
コマンドを実行する際にプラグインを有効にするかどうかを制御します。このオプションがファイルに含まれていない場合は手動で追加できます。
enabled=0
に /etc/yum.conf
を設定してすべてのプラグインを無効にすると、個々の設定ファイルで有効かどうかに関わらず、すべてのプラグインが無効になります。
1 回の yum
コマンドですべての yum プラグインを無効にする場合は、--noplugins
オプションを使用します。
1 つのコマンドで yum プラグインを無効にする場合は、yum
コマンドに --disableplugin=plugin_name
オプションを追加します。たとえば、システムの更新中に aliases プラグインを無効にするには、以下を入力します。
~]# yum update --disableplugin=aliases
--disableplugin=
オプションに指定したプラグイン名は、yum
コマンドの出力の Loaded plugins
行の後に一覧表示される名前と同じです。名前をコンマで区切ることにより、複数のプラグインを無効にすることができます。さらに、glob 表現を使用して、複数のプラグイン名に一致したり、長いプラグイン名を短くすることができます。
~]# yum update --disableplugin=aliases,lang*
9.6.2. 追加の Yum プラグインのインストール
yum プラグインは通常、yum-plugin-plugin_name
package-naming 規則に従いますが、常に kabi プラグインを提供するパッケージの名前は kabi-yum-plugins
です。yum プラグインは、他のパッケージをインストールするのと同じ方法でインストールできます。たとえば、yum-aliases プラグインをインストールするには、シェルプロンプトで次のコマンドを実行します。
~]# yum install yum-plugin-aliases
9.6.3. yum プラグインの使用方法
以下では、便利な yum プラグインの説明と使用方法を紹介しています。プラグインは名前で表示されており、括弧内はパッケージ名になります。
- search-disabled-repos (subscription-manager)
search-disabled-repos プラグインを使用すると、依存関係を解決するために無効なリポジトリーを一時的または永久的に有効にできます。このプラグインが有効な場合は、依存関係の解決に失敗して Yum がパッケージのインストールに失敗したときに、無効なリポジトリーを一時的に有効し、再試行することが提示されます。インストールが成功した場合、Yum は使用されているリポジトリーを永久的に有効にすることも提示します。プラグインは subscription-manager により管理されているリポジトリーとのみ連携し、カスタムリポジトリーとは連携しません。
重要yum
が--assumeyes
または-y
オプションを指定して実行される場合、またはassumeyes
ディレクティブが/etc/yum.conf
で有効になっている場合、プラグインは、確認を求めるプロンプトなしに、一時的に、永続的に無効なリポジトリーを有効にします。この結果、有効にしたくないリポジトリーが有効になるといった問題が発生することがあります。search-disabled-repos プラグインを設定するには、
/etc/yum/pluginconf.d/search-disabled-repos.conf
にある設定ファイルを編集します。[main]
セクションで使用できるディレクティブのリストについては、以下の表を参照してください。表9.3 サポートされる
search-disabled-repos.conf
ディレクティブディレクティブ 詳細 enabled
=値プラグインを有効または無効にできます。値 は、
1
(有効) または0
(無効) のいずれかにする必要があります。プラグインはデフォルトで有効です。notify_only
=値プラグインの動作を通知のみに制限できます。value は
1
(Yum の動作の変更なしで通知のみ) または0
(Yum の動作の変更) のいずれかにする必要があります。デフォルトでは、プラグインはユーザーへの通知のみを行います。ignored_repos
=リポジトリープラグインで有効でないリポジトリーを指定できます。
- kabi (kabi-yum-plugins)
kabi プラグインは、ドライバー更新パッケージが公式の Red Hat kernel Application Binary Interface (kABI) と適合するかどうかを確認します。このプラグインが有効な状態で、ユーザーがホワイトリストにないカーネルシンボルを使用するパッケージのインストールを試行する場合は、警告メッセージがシステムログに書き込まれます。さらには、プラグインを enforcing モードで実行するように設定すると、そうしたパッケージがインストールされないようにできます。
kabi プラグインを設定するには、
/etc/yum/pluginconf.d/kabi.conf
にある設定ファイルを編集します。[main]
セクションに使用できるディレクティブの一覧を以下の表に示します。表9.4 サポートされる
kabi.conf
ディレクティブディレクティブ 詳細 enabled
=値プラグインを有効または無効にできます。値 は、
1
(有効) または0
(無効) のいずれかにする必要があります。インストール時には、プラグインはデフォルトで有効です。whitelists
=ディレクトリーサポートされているカーネルシンボルを持つファイルがある directory を指定できます。デフォルトでは、kabi プラグインは kernel-abi-whitelists パッケージ (
/usr/lib/modules/kabi-rhel70/
ディレクトリー) が提供するファイルを使用します。enforce
=値enforcing モードを有効または無効にできます。値 は、
1
(有効) または0
(無効) のいずれかにする必要があります。デフォルトでは、このオプションはコメントアウトされ kabi プラグインは警告メッセージのみを表示します。- product-id (subscription-manager)
- product-id プラグインは、Content Delivery Network (コンテンツ配信ネットワーク) からインストールされた製品の製品識別証明書を管理します。product-id プラグインはデフォルトでインストールされています。
- langpacks (yum-langpacks)
- langpacks プラグインは、インストールされているすべてのパッケージ用に選択された言語のロケールパッケージを検索するために使用します。langpacks プラグインはデフォルトでインストールされます。
- エイリアス (yum-plugin-aliases )
-
aliases プラグインは、
yum
のエイリアスの設定と使用を可能にするalias
コマンドラインオプションを追加します。 - yum-changelog (yum-plugin-changelog)
-
yum-changelog プラグインは、更新前後にパッケージ変更ログの表示を有効にする
--changelog
コマンドラインオプションを追加します。 - yum-tmprepo (yum-plugin-tmprepo)
-
yum-tmprepo プラグインは、リポジトリーファイルの URL を取り扱う
--tmprepo
コマンドラインオプションを追加し、1 つのトランザクションに対してのみダウンロードおよび有効化します。このプラグインはリポジトリーの安全な一時的使用を確保します。デフォルトでは、gpg 確認を無効にしません。 - yum-verify ( yum-plugin-verify )
-
yum-verify プラグインは
verify
、verify-rpm
、およびverify-all
コマンドラインオプションを追加し、システム上の検証データを表示します。 - yum-versionlock ( yum-plugin-versionlock )
-
yum-versionlock プラグインは選択されたパッケージの他のバージョンを除外し、パッケージが最新バージョンに更新されることを防ぎます。
versionlock
コマンドラインオプションを使用すると、ロックされたパッケージを表示して、編集できます。
9.7. yum-cron を使用したパッケージデータベースの自動更新および更新のダウンロード
yum-cron
サービスがパッケージの更新を自動的に確認してダウンロードします。yum-cron
が提供する cron ジョブは、yum-cron パッケージのインストール後すぐにアクティブになります。また、yum-cron
サービスは、ダウンロードした更新を自動的にインストールできます。
デフォルトの設定では、yum-cron
サービスは以下のようになります。
- 1 時間ごとに yum cache のメタデータを更新。
- yum cache で保留になっているパッケージの更新を 1 日 1 回ダウンロード。リポジトリーで新しいパッケージが利用可能になると、メールが送信されます。詳細は 「任意のメール通知の設定」 の章を参照してください。
yum-cron
サービスには設定ファイルが 2 つあります。
/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
9.7.1. 更新の自動インストールの有効化
ダウンロードした更新の自動インストールを有効にするには、日次設定ファイル (日次インストールの場合) または 1 時間単位の設定ファイル (1 時間ごとのインストールの場合) で apply_updates
を以下のように設定します。
apply_updates = yes
9.7.2. 任意のメール通知の設定
デフォルトでは、yum-cron
サービスは cron
を使用して、実行したコマンドの出力を含むメール送信を行います。このメールは cron
設定に従って送信されます。通常は、ローカルのスーパーユーザー、および /var/spool/mail/root
ファイルに保存されます。
すべての cron
ジョブに影響する設定とは異なり、特定のメール設定を使用できます。ただし、このメール設定では TLS および全体のメールの組み込みロジックはサポートされません。
yum-cron
組み込みメール通知を有効にするには、以下を行います。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
[emitters]
セクションで、以下のオプションを設定します。emit_via = email
-
必要に応じて
email_from
、email_to
、email_host
オプションを設定します。
9.7.3. 個別のリポジトリーの有効化または無効化
yum-cron
は、リポジトリーの特定の設定をサポートしません。yum-cron
ではなく、yum
で個別のリポジトリーを有効または無効にするには、以下の手順を行ってください。
- システムの任意の場所に空のリポジトリー設定ディレクトリーを作成します。
-
/etc/yum.repos.d/
ディレクトリーから、新たに作成したこのディレクトリーに設定ファイルをすべてコピーします。 /etc/yum.repos.d/
内の各.repo
設定ファイルで、以下のようにenabled
オプションを設定します。enabled = 1
- リポジトリーを有効にするには、以下を行います。
enabled = 0
- リポジトリーを無効にするには、以下を行います。
選択した
yum-cron
設定ファイルの最後に、新たに作成したリポジトリーのディレクトリーを指定する以下のオプションを追加します。reposdir=/path/to/new/reposdir
9.7.4. Yum-cron 設定のテスト
次のスケジュールされた yum-cron
タスクを待たずに yum-cron
設定をテストするには、以下を実行します。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
以下のように、選択した設定ファイルに
random_sleep
オプションを設定します。random_sleep = 0
設定を保存します。
# yum-cron /etc/yum/yum-cron.conf # yum-cron /etc/yum/yum-cron-hourly.conf
9.7.5. yum-cron メッセージの無効
yum-cron
メッセージを完全に無効にすることはできませんが、優先度が重大なメッセージだけに制限することはできます。メッセージを制限するには、以下を行います。
選択した
yum-cron
設定ファイルを開きます。/etc/yum/yum-cron.conf
- 日次タスクの場合。
/etc/yum/yum-cron-hourly.conf
- 1 時間ごとのタスクの場合。
設定ファイルの
[base]
セクションに以下のオプションを設定します。debuglevel = -4
9.7.6. パッケージの自動削除
yum-cron
サービスは、yum clean all
コマンドと同様に、パッケージを削除する設定オプションはサポートしていません。パッケージを自動的に削除するには、実行可能なシェルスクリプトとして cron ジョブを作成できます。
以下を含むシェルスクリプトを
/etc/cron.daily/
ディレクトリーに作成します。#!/bin/sh yum clean all
スクリプトを実行可能にします。
# chmod +x /etc/cron.daily/script-name.sh
9.8. 関連資料
Red Hat Enterprise Linux でソフトウェアパッケージを管理する方法についての詳細情報は、下記のリソースを参照してください。
インストールされているドキュメント
-
yum
(8): yum コマンドラインユーティリティーの man ページには、サポートされるオプションおよびコマンドの完全なリストを提供します。 -
yumdb
(8):yumdb
コマンドラインユーティリティーの man ページでは、このツールを使用してクエリーを行い、必要であれば yum データベースを変更する方法が説明されています。 -
yum.conf
(5):yum.conf
という名前の man ページでは、利用可能な yum 設定オプションが 説明されています。 -
yum-utils
(1):yum-utils
の man ページでは、yum 設定の管理、リポジトリーの操作、yum データベースの作業を行う追加ユーティリティーの一覧表示と簡単な説明が提供されます。
オンラインリソース
- Yum Guides: プロジェクトホームページ上の Yum Guides では、追加のドキュメンテーションのリンクがあります。
- Red Hat Customer Portal Labs: Red Hat Customer Portal Labs で「Yum Repository Configuration Helper」をご利用になれます。
関連項目
-
6章権限の取得 では、
su
およびsudo
コマンドを使って管理者権限を取得する方法を説明しています。
このページには機械翻訳が使用されている場合があります (詳細はこちら)。