Usual Software Engineer

よくあるソフトウェアエンジニアのブログ

yum でインストールしたいパッケージを探す

CentOS ならおなじみの yum ですが、欲しいパッケージをどう探し当ててインストールするか困ったことありませんか? 結局ググって探すオチになることが多いと思いますが、本来の yum コマンドの機能で探してみましょう。

(今回は苦し紛れで yum の小ネタですw)

使用した docker image は docker run --rm -it centos:7.6.1810 です。

$ yum --version | head -1
3.4.3
$ yum -y install epel-release
$ yum-config-manager --disable epel

パッケージ一覧

yum list

何も考えずに一覧を表示して見つけるのもありだとは思います。名前でフィルタせずにパイプして grep するのも良いと思います。 デフォルトで disable になっている yum リポジトリもあると思うので --enablerepo=[repo] を使うことも頭の片隅に入れておきましょう。

$ yum --enablerepo=epel list 'ansible*'
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Available Packages
ansible.noarch                                                             2.7.10-1.el7                                                        epel
ansible-doc.noarch                                                         2.7.10-1.el7                                                        epel
ansible-inventory-grapher.noarch                                           2.4.4-1.el7                                                         epel
ansible-lint.noarch                                                        3.5.1-1.el7                                                         epel
ansible-openstack-modules.noarch                                           0-20140902git79d751a.el7                                            epel
ansible-review.noarch                                                      0.13.4-1.el7                                                        epel

パッケージ検索

yum search

一覧から探すのもなんかコレジャナイ感があるので、パッケージ検索をしてみます。 しかし search では正規表現などは使えないようなので、正確に探したい時は grep などが必要になってしまいます。なんか嬉しくないですね。 ただ summary などの文字も含めた検索ができるので、そこは search ならではという感じです。

$ yum --enablerepo=epel search ansible
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: www.ftp.ne.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
============================================================== N/S matched: ansible ===============================================================
ansible-doc.noarch : Documentation for Ansible
ansible-inventory-grapher.noarch : Creates graphs representing ansible inventory
ansible-lint.noarch : Best practices checker for Ansible
ansible-openstack-modules.noarch : Unofficial Ansible modules for managing Openstack
ansible-review.noarch : Reviews Ansible playbooks, roles and inventory and suggests improvements
centos-release-ansible26.noarch : Ansible 2.6 packages from the CentOS ConfigManagement SIG repository
python2-ansible-runner.noarch : A tool and python library to interface with Ansible
python2-ansible-tower-cli.noarch : A CLI tool for Ansible Tower
ansible.noarch : SSH-based configuration management, deployment, and task execution system
kubernetes-ansible.noarch : Playbook and set of roles for seting up a Kubernetes cluster onto machines
loopabull.noarch : Event loop driven Ansible playbook execution engine
standard-test-roles.noarch : Standard Test Interface Ansible roles

  Name and summary matches only, use "search all" for everything.

ちなみに探し当てたパッケージのバージョンなどを確認したい時は yum info が使えます。 Available Packages に複数表示された場合は、 yum --enablerepo=epel install ansible-2.7.10 のようにバージョンを指定してインストールすることもできます。

$ yum --enablerepo=epel info ansible
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Available Packages
Name        : ansible
Arch        : noarch
Version     : 2.7.10
Release     : 1.el7
Size        : 11 M
Repo        : epel/x86_64
Summary     : SSH-based configuration management, deployment, and task execution system
URL         : http://ansible.com
License     : GPLv3+
Description : Ansible is a radically simple model-driven configuration management,
            : multi-node deployment, and remote task execution system. Ansible works
            : over SSH and does not require any software or daemons to be installed
            : on remote nodes. Extension modules can be written in any language and
            : are transferred to managed machines automatically.

コマンド名からパッケージを検索

yum provides

実はここがメインの話なのですが、 インストールしたいコマンド名はわかっても yum のパッケージ名が全く思い浮かばい時 もありますよね。 そんな時に provides が使えます。 alias の whatprovides でも良いです。

$ yum provides '*bin/tracepath*'
Loaded plugins: fastestmirror, ovl
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
iputils-20160308-10.el7.x86_64 : Network monitoring tools including ping
Repo        : base
Matched from:
Filename    : /usr/bin/tracepath
Filename    : /usr/bin/tracepath6
Filename    : /usr/sbin/tracepath
Filename    : /usr/sbin/tracepath6



iputils-20160308-10.el7.x86_64 : Network monitoring tools including ping
Repo        : @CentOS
Matched from:
Filename    : /usr/sbin/tracepath
Filename    : /usr/sbin/tracepath6
Filename    : /usr/bin/tracepath
Filename    : /usr/bin/tracepath6


tracepath は iputils パッケージにあることがわかりました。 iputils はインストール済みだったので rpm コマンドでパッケージのファイル一覧を確認することができます。

$ rpm -qls iputils
normal        /etc/sysconfig/rdisc
normal        /usr/bin/ping
normal        /usr/bin/ping6
normal        /usr/bin/tracepath
normal        /usr/bin/tracepath6
normal        /usr/lib/systemd/system/rdisc.service
normal        /usr/sbin/arping
normal        /usr/sbin/clockdiff
normal        /usr/sbin/ifenslave
normal        /usr/sbin/ping6
normal        /usr/sbin/rdisc
normal        /usr/sbin/tracepath
normal        /usr/sbin/tracepath6
not installed /usr/share/doc/iputils-20160308
not installed /usr/share/doc/iputils-20160308/README.bonding
not installed /usr/share/doc/iputils-20160308/RELNOTES
not installed /usr/share/man/man8/arping.8.gz
not installed /usr/share/man/man8/clockdiff.8.gz
not installed /usr/share/man/man8/ifenslave.8.gz
not installed /usr/share/man/man8/ping.8.gz
not installed /usr/share/man/man8/ping6.8.gz
not installed /usr/share/man/man8/rdisc.8.gz
not installed /usr/share/man/man8/tracepath.8.gz
not installed /usr/share/man/man8/tracepath6.8.gz

以上、短いですが yum の小ネタでした。

本気で学ぶ Linux実践入門 (サーバ運用のための業務レベル管理術)

本気で学ぶ Linux実践入門 (サーバ運用のための業務レベル管理術)