Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.2. パッケージでの作業

Yum では、パッケージの検索、パッケージについての情報の表示、パッケージのインストールおよび削除など、ソフトウェアパッケージの完全な操作が可能です。

9.2.1. パッケージの検索

以下のコマンドを使用することで、すべての RPM のパッケージ名、詳細、サマリーを検索できます。
yum search term
term を、検索するパッケージ名に置き換えます。

例9.4 特定の文字列に一致するパッケージの検索

vimgvim、または 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[出力は省略されています]

============================ N/S matched: emacs =============================
emacs.x86_64 : GNU Emacs text editor
emacs-auctex.noarch : Enhanced TeX modes for Emacs[出力は省略されています]

  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
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 コマンドの詳細は、man ページの yumdb(8) を参照してください。

9.2.4. パッケージのインストール

単一パッケージと、そのパッケージでインストールされていない依存関係をすべてインストールするには、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
install-n を使用した場合は、その後の name が正確なパッケージ名を指していると yum は解釈します。また、install-na では、ピリオドを使用してパッケージ名とアーキテクチャーを指定しており、install-nevra では、name-epoch:version-release.architecture の形式で指定していると解釈します。同様に、yum remove-nyum 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 (はい) または N (いいえ) オプションの他に、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 コマンドを使用してインストールしたり、別のデバイスと共有したりできます。ダウンロードしたパッケージは、キャッシュディレクトリーのサブディレクトリー (デフォルトでは /var/cache/yum/$basearch/$releasever/packages/) の 1 つに保存されます。ダウンロードはバックグラウンドで行われるため、並行して yum を他の操作に使用できます。

9.2.6. パッケージの削除

パッケージのインストールと同様に、yum を使用するとパッケージのアンインストールができます。特定のパッケージと、
それに依存するすべてのパッケージをアンインストールするには、root で以下のコマンドを実行します。
yum remove package_name
複数のパッケージをインストールする場合と同様、コマンドに複数のパッケージ名を追加すると、一度に複数のパッケージを削除できます。

例9.13 複数パッケージの削除

totem を削除するには、シェルプロンプトで以下を入力します。
~]# yum remove totem
install と同じように、remove は以下の引数を使用できます。
  • パッケージ名
  • glob 表現
  • ファイル一覧
  • パッケージが提供する機能

警告

Yum では、パッケージを削除して、その依存パッケージを残すことはできません。こうした動作は RPM でのみ実行可能であり、推奨されません。システムが機能しなくなる、またはアプリケーションに誤作動やクラッシュが生じる恐れがあるためです。