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

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 では、yumname を正確なパッケージ名として判断します。install-na コマンドは yum に、その後に続く引数にピリオドで分けられたパッケージ名とアーキテクチャーが含まれていることを伝えます。install-nevra では、yum は引数が 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 でのみ実行可能であり、推奨されません。システムが機能しなくなる、またはアプリケーションに誤作動やクラッシュが生じる恐れがあるためです。