UNIXの部屋 コマンド: yum


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド yum パッケージ管理ツール (インストール・追加・削除)

yum コマンドは、RedHat Linux・Fedora・CentOS など、RHEL 系 OS で使用されているパッケージ管理ツールである。パッケージの検索・インストール・依存関係の解決等を行うことができる。

基本的な使い方
検索するには
% yum search [検索文字列]
詳細情報を表示するには
% yum info [パッケージ名]
インストールするには
# yum install [パッケージ名]
質問にすべて y と答えつつインストールするには
# yum -y install [パッケージ名]
既にインストール済みのパッケージを表示するには
% yum list installed
既にインストール済みのパッケージで、更新可能なものを表示するには
% yum list updates
既にインストール済みのパッケージで、新しいバージョンに更新するには
# yum update [パッケージ名]
既にインストール済みのパッケージで、更新可能なものをすべて更新するには
# yum update

データ構成
下記が yum が表示する情報の例である。
名前 (name)         : httpd
アーキテクチャ      : x86_64
バージョン          : 2.2.15
リリース            : 56.el6.centos.3
容量                : 834 k
リポジトリー        : updates
要約 (summary)      : Apache HTTP Server
URL                 : http://httpd.apache.org/
ライセンス          : ASL 2.0
説明 (description)  : The Apache HTTP Server is a powerful, efficient, and extensible
                    : web server.

名前 (name) がパッケージ名。この例では "httpd" となる。

アーキテクチャはこの環境では x86_64。他に amd64、x86、i686 などがあり、CPU の違いと思えばよいが、通常は適切なアーキテクチャが選ばれるため、意識する必要はない。また、アーキテクチャが noarch である場合、バイナリがなくスクリプトのみで構成されているので CPU を選ばず使用可能ということである。

上記ではバージョンは 2.2.15 となっているが、これは Apache httpd server 開発元であるプロジェクトが配布したバージョンが 2.2.15 ということである。ではリリースの 56.el6.centos.3 とは何かと言うと、パッチレベルが 56 であり、el6 は redhat Enterprise Linux 6 シリーズであるところの CentOS 用で、3 は謎。パッチレベル 56 について、2回やりなおして3回目で OK だった、ということであろう(か?)。

検索・表示・確認
パッケージの検索は、yum list や yum search を使う。

▼yum list
yum list
引数なしの場合、インストール済のパッケージと、利用可能なパッケージの一覧を表示する。数千行以上表示されるため、おすすめはしない。
yum list [パッケージ名]
パッケージ名を指定すると、そのパッケージの情報のみを表示する。
% yum list bash
利用可能なパッケージ
bash.x86_64 4.1.2-40.el6 @base
→ bash がインストールされていない場合、「利用可能」となる。
% yum list bash
インストール済みパッケージ
bash.x86_64 4.1.2-40.el6 @base
→ bash がインストールされていなる場合、「インストール済み」となる。
% yum list bash
インストール済みパッケージ
bash.x86_64 4.1.2-40.el6 @base
利用可能なパッケージ
bash.x86_64 4.1.2-41.el6_8 updates
→ bash が更新可能である場合、上記のように 2つ表示分される。
yum list [グロブ]
上記の "yum list bash" の場合、bash は完全一致での検索となる。"bash*" で検索すると、下記のように bash から始まるパッケージ名が表示される。"*bash*" での中間一致や、"bash-[a-d]*" などでの範囲指定も可能。
% yum list "bash*"
bash.x86_64 4.1.2-40.el6 @base
bash-argsparse.noarch 1.7-1.el6 epel
bash-completion.noarch 1:1.3-7.el6 epel
bash-doc.x86_64 4.1.2-41.el6_8 updates
bash-task.x86_64 2.1.1-1.el6.rf rpmforge
yum list installed
既にインストールされているパッケージを表示する。
yum list updates または yum check-update
既にインストールされているが、新しいバージョンがあるパッケージを表示する。
yum list available
利用可能 (インストールされていない、または新たしいバージョンのあるパッケージ) を表示する。
▼yum list extras

▼yum search
yum search は、パッケージ名または要約 (summary) から検索を行う。もし上記で見つからない場合のみ、説明 (description) と URL からも検索を行う。
yum search [検索文字列]
yum search all [検索文字列]

詳細情報表示
yum list と似ているが、yum info とすると、「データ構成」で示したような詳細情報を表示する。

▼yum info [パッケージ名]
指定したパッケージ名の詳細情報を表示する。
▼yum info [グロブ]
指定したパッケージ名の詳細情報を表示する。
% yum info "bash*"
▼yum info installed
既にインストールされているパッケージの詳細情報を表示する。
▼yum info update
既にインストールされているが、新しいバージョンがあるパッケージの詳細情報を表示する。
▼yum info available
利用可能 (インストールされていない、または新たしいバージョンのあるパッケージ) の詳細情報を示する。
▼yum info extras

インストール
▼yum install [パッケージ名]
指定したパッケージをインストールする。root 権限が必要。x86_64 などのアーキテクチャは適切なものが選択され、バージョンは最新のものが使われる。
# yum install httpd
# yum -y install httpd
→ 全ての質問に y と答える。
▼yum install [rpmファイル名] または yum localinstall [rpmファイル名]
ローカルに rpm ファイルを配置しインストールするには、以前は localinstall であったが、今は yum install [rpmファイル] とすればよい。
アップデート・更新
install と同じような指定方法である。

yum update
yum update [パッケージ名]
yum update [rpmファイル名]
yum localupdate [rpmファイル名]
古い指定方法。今時は yum update [rpmファイル名] でよい。

削除・アンインストール
yum remove [パッケージ名] または yum erase [パッケージ名]

キャッシュクリア
yum は /var/cache/yum などにメタデータやパッケージファイルなどのキャッシュを蓄積する。yum clean all とすると、すべてのキャッシュを削除する。キャッシュなので、削除しても動作には影響しない。du でサイズを確認し、もしデータが多いようなら削除するとよい。
# du -sh /var/cache/yum
300M
# yum clean all

yum clean all
すべてのキャッシュを削除する。
yum clean expire-cache
メタデータなどをいつダウンロードしたかの情報を削除する。つまり、次回実行時に必ずキャッシュの有効性が再検証される。実際に削除するのは /var/cache/yum/x86_64/7/base/cachecookie などのようだ。
yum clean packages
ダウンロードしたパッケージファイルを削除する。
yum install した場合、パッケージファイルは削除されるので、ここで対象となるのは --downloadonly オプションでダウンロードしたがまだインストールしていない rpm ファイルと思われる。
実際に削除するのは /var/cache/yum/x86_64/6/updates/packages/foobar-1.2.3.el6.centos.3.x86_64.rpm などのようだ。
yum clean headers
依存関係のチェックに使用したヘッダファイルを削除する。
yum clean metadata
よくわからないが、/var/cache/yum/x86_64/7/base/repomd.xml や /var/cache/yum/x86_64/7/base/gen/comps.xml などを削除するようだ。
yum clean dbcache
メタデータに高速アクセスするための sqlite ファイルを削除する。
yum clean rpmdb
ローカルの rpmdb のファイルを削除する。実際に削除するのは /var/lib/yum/rpmdb-indexes/file-requires などのようだ。
yum clean plugins
プラグインが使うキャッシュファイルを削除する。

グループ
グループとは、複数のパッケージについて「開発ツール」などの名称を付け、ひとまとめにインストールするなど管理を簡単にしたものである。

yum grouplist にて、グループの一覧と、それがインストール済みであるかどうかがわかる。
% yum grouplist
インストール済みグループ:
Emacs
MySQL データベースサーバー
Web サーバー
その他の開発
(略)
Installed Language Groups:
日本語のサポート [ja]
利用可能なグループ
FTP サーバー
PHP サポート
インターネットブラウザ
(略)

yum groupinfo にて、そのグループにどのようなパッケージが含まれるかがわかる。
% yum groupinfo "Web Server"
強制的なパッケージ (Mandatory Package)
httpd
標準パッケージ (Default Package)
mod_perl
mod_ssl
(略)
オプションパッケージ (Optional Package)
memcached
mod_security
squid
(略)
強制的なパッケージ (Mandatory Package)・標準パッケージ (Default Package)・オプションパッケージ (Optional Package) の 3種類がある。例えばグループ名「Web Server」であれば、下記のようになっている。
yum のグループに関する標準挙動は
強制的なパッケージ (Mandatory Package) と標準パッケージ (Default Package) をインストールするが、オプションパッケージ (Optional Package) はインストールしない
であるため、
yum groupinstall
とすると、オプションパッケージ (Optional Package) はインストールされない。これも一緒にインストールしたい場合は
# yum --setopt=group_package_types=optional groupinstall
とする。

yum コマンドのオプション
-y または --assumeyes
全ての質問に y と答えたかのようにふるまう。
--downloadonly
yum install や yum update において、--downloadonly を付けると、実際にインストールせず、パッケージファイルをダウンロードするところで止めておく。インストールする際はダウンロードが不要であるため、時間を節約することができる。

yum コマンドについて
yum はメンテナンスが難しい状況であったようで、DNF (Dandified Yum) に置き換えられることが決まっている。2015/05 リリースの Fedora 22 ではすでに dnf が導入され、そのうち RedHat Enterprise Linux や CentOS も順次置き換わっていくと思われる。

しかしながら、基本的には操作方法は引き継がれており、
% yum info [パッケージ名]

% dnf info [パッケージ名]
などとすれば、おおむね動く。


頑張って書いたおすすめコンテンツ!