Linuxを扱えるようになろう(yum編)

こんにちわ

[グローバルセンス株式会社](https://gb-sense.com)のskanehiraです。

今までは、Linuxの基本的な操作に関する記事を書いてきましたが、
今回はパッケージ管理ツールのyumについて書いて行きます。（ちょっと踏み込んでみる）

# **最初に**
パッケージはWindowsで言うとインストーラーと同じ様なモノです。

インストーラーはソフトウェアをOSにインストールに必要なリソースがバンドルされていて、
ユーザの選択・設定やパスの設定をするだけで、
後は必要なリソースを適切な場所に配置したり必要な処理をしたりします。

Linuxに於いても同様の事が出来ます。
それがパッケージ管理ツールです。

パッケージ管理ツールは
パッケージファイルをよろしくインストールしてくれるありがたい存在です。

ただし一つのパッケージをインストールするのに、
別のパッケージが必要だったりしますので、
インストールしたいソフトウェアによっては本体とは別にたくさんのパッケージが必要だったりします。

ここがちょっと親戚じゃないですよね…

# **yumとは？**
yumは、パッケージ管理ツールの一つです。
もっとも使われているパッケージ管理ツールではないかと思います。

rpmというパッケージ管理ツールもあります。
こちらは拡張子がrpmと付いているファイルがパッケージファイルになります。

rpmコマンドを使ってパッケージをインストールしますが、
依存ライブラリがないとインストールが失敗します。

上記で説明したモノによってはたくさんのrpmファイルを用意しないと行けなくて大変です…

そこで、登場したのがyumです。
yumはインストールしたいソフトウェアと依存ライブラリを自動的にチェックしてダウンロードしてくれます。

なので、基本的にパッケージファイルを自ら探す旅に出る必要は無いです。
yum先生がやってくれます。
そう、yumなら。

# **リポジトリ**
先程説明したように、パッケージyumが自動でパッケージファイルをダウンロードしてくれると書いてありますが、
ではどこからダウンロードするのだろうか？
という疑問が生まれますよね。

ダウンロード先はリポジトリと言われている場所になります。
パッケージファイルがたくさん保管されているサーバ、それがリポジトリです。

yumはインストール対象がリポジトリの存在しているかを検索しに行き、
見つけた場合インストールしてくれます。

# **yumを使ってみよう**
では、yumは何をしてくれるのかを理解したところで、
実際使ってパッケージをインストールしてみましょうか。

ただし、yumを実行するのに、root権限が必要なので、sudoというコマンドを使います。
sudoはrootユーザに切り替えなくても、root権限でコマンドを実行でます。

細かい説明は別の機会に説明しますが、
sudoを実行するのに現在ログインしているユーザのパスワードが必要です。

- パッケージインストール

折角なので、先日紹介したvimをインストールしてみましょう。

```shell-session
[skanehira@localhost ~]$ sudo yum install vim

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] skanehira のパスワード:
読み込んだプラグイン:fastestmirror
base                                                                         | 3.6 kB  00:00:00
extras                                                                       | 3.4 kB  00:00:00
updates                                                                      | 3.4 kB  00:00:00
(1/4): extras/7/x86_64/primary_db                                            | 166 kB  00:00:00
(2/4): base/7/x86_64/group_gz                                                | 156 kB  00:00:00
(3/4): base/7/x86_64/primary_db                                              | 5.7 MB  00:00:02
(4/4): updates/7/x86_64/primary_db                                           | 6.0 MB  00:00:04
Determining fastest mirrors
 * base: mirror.fairway.ne.jp
 * extras: mirror.qoxy.com
 * updates: mirror.qoxy.com
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ vim-enhanced.x86_64 2:7.4.160-2.el7 を インストール
--> 依存性の処理をしています: vim-common = 2:7.4.160-2.el7 のパッケージ: 2:vim-enhanced-7.4.160-2.el7.x86_64
--> 依存性の処理をしています: perl(:MODULE_COMPAT_5.16.3) のパッケージ: 2:vim-enhanced-7.4.160-2.el7.x86_64
--> 依存性の処理をしています: libperl.so()(64bit) のパッケージ: 2:vim-enhanced-7.4.160-2.el7.x86_64
--> 依存性の処理をしています: libgpm.so.2()(64bit) のパッケージ: 2:vim-enhanced-7.4.160-2.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ gpm-libs.x86_64 0:1.20.7-5.el7 を インストール
---> パッケージ perl.x86_64 4:5.16.3-292.el7 を インストール
--> 依存性の処理をしています: perl(Socket) >= 1.3 のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Scalar::Util) >= 1.10 のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl-macros のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(threads::shared) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(threads) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(constant) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Time::Local) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Time::HiRes) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Storable) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Socket) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Scalar::Util) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Pod::Simple::XHTML) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Pod::Simple::Search) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Getopt::Long) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Filter::Util::Call) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(File::Temp) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(File::Spec::Unix) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(File::Spec::Functions) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(File::Spec) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(File::Path) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Exporter) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Cwd) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
--> 依存性の処理をしています: perl(Carp) のパッケージ: 4:perl-5.16.3-292.el7.x86_64
---> パッケージ perl-libs.x86_64 4:5.16.3-292.el7 を インストール
---> パッケージ vim-common.x86_64 2:7.4.160-2.el7 を インストール
--> 依存性の処理をしています: vim-filesystem のパッケージ: 2:vim-common-7.4.160-2.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ perl-Carp.noarch 0:1.26-244.el7 を インストール
---> パッケージ perl-Exporter.noarch 0:5.68-3.el7 を インストール
---> パッケージ perl-File-Path.noarch 0:2.09-2.el7 を インストール
---> パッケージ perl-File-Temp.noarch 0:0.23.01-3.el7 を インストール
---> パッケージ perl-Filter.x86_64 0:1.49-3.el7 を インストール
---> パッケージ perl-Getopt-Long.noarch 0:2.40-2.el7 を インストール
--> 依存性の処理をしています: perl(Pod::Usage) >= 1.14 のパッケージ: perl-Getopt-Long-2.40-2.el7.noarch
--> 依存性の処理をしています: perl(Text::ParseWords) のパッケージ: perl-Getopt-Long-2.40-2.el7.noarch
---> パッケージ perl-PathTools.x86_64 0:3.40-5.el7 を インストール
---> パッケージ perl-Pod-Simple.noarch 1:3.28-4.el7 を インストール
--> 依存性の処理をしています: perl(Pod::Escapes) >= 1.04 のパッケージ: 1:perl-Pod-Simple-3.28-4.el7.noarch
--> 依存性の処理をしています: perl(Encode) のパッケージ: 1:perl-Pod-Simple-3.28-4.el7.noarch
---> パッケージ perl-Scalar-List-Utils.x86_64 0:1.27-248.el7 を インストール
---> パッケージ perl-Socket.x86_64 0:2.010-4.el7 を インストール
---> パッケージ perl-Storable.x86_64 0:2.45-3.el7 を インストール
---> パッケージ perl-Time-HiRes.x86_64 4:1.9725-3.el7 を インストール
---> パッケージ perl-Time-Local.noarch 0:1.2300-2.el7 を インストール
---> パッケージ perl-constant.noarch 0:1.27-2.el7 を インストール
---> パッケージ perl-macros.x86_64 4:5.16.3-292.el7 を インストール
---> パッケージ perl-threads.x86_64 0:1.87-4.el7 を インストール
---> パッケージ perl-threads-shared.x86_64 0:1.43-6.el7 を インストール
---> パッケージ vim-filesystem.x86_64 2:7.4.160-2.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ perl-Encode.x86_64 0:2.51-7.el7 を インストール
---> パッケージ perl-Pod-Escapes.noarch 1:1.04-292.el7 を インストール
---> パッケージ perl-Pod-Usage.noarch 0:1.63-3.el7 を インストール
--> 依存性の処理をしています: perl(Pod::Text) >= 3.15 のパッケージ: perl-Pod-Usage-1.63-3.el7.noarch
--> 依存性の処理をしています: perl-Pod-Perldoc のパッケージ: perl-Pod-Usage-1.63-3.el7.noarch
---> パッケージ perl-Text-ParseWords.noarch 0:3.29-4.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ perl-Pod-Perldoc.noarch 0:3.20-4.el7 を インストール
--> 依存性の処理をしています: perl(parent) のパッケージ: perl-Pod-Perldoc-3.20-4.el7.noarch
--> 依存性の処理をしています: perl(HTTP::Tiny) のパッケージ: perl-Pod-Perldoc-3.20-4.el7.noarch
---> パッケージ perl-podlators.noarch 0:2.5.1-3.el7 を インストール
--> トランザクションの確認を実行しています。
---> パッケージ perl-HTTP-Tiny.noarch 0:0.033-3.el7 を インストール
---> パッケージ perl-parent.noarch 1:0.225-244.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package                          アーキテクチャー バージョン                  リポジトリー    容量
====================================================================================================
インストール中:
 vim-enhanced                     x86_64           2:7.4.160-2.el7             base           1.0 M
依存性関連でのインストールをします:
 gpm-libs                         x86_64           1.20.7-5.el7                base            32 k
 perl                             x86_64           4:5.16.3-292.el7            base           8.0 M
 perl-Carp                        noarch           1.26-244.el7                base            19 k
 perl-Encode                      x86_64           2.51-7.el7                  base           1.5 M
 perl-Exporter                    noarch           5.68-3.el7                  base            28 k
 perl-File-Path                   noarch           2.09-2.el7                  base            26 k
 perl-File-Temp                   noarch           0.23.01-3.el7               base            56 k
 perl-Filter                      x86_64           1.49-3.el7                  base            76 k
 perl-Getopt-Long                 noarch           2.40-2.el7                  base            56 k
 perl-HTTP-Tiny                   noarch           0.033-3.el7                 base            38 k
 perl-PathTools                   x86_64           3.40-5.el7                  base            82 k
 perl-Pod-Escapes                 noarch           1:1.04-292.el7              base            51 k
 perl-Pod-Perldoc                 noarch           3.20-4.el7                  base            87 k
 perl-Pod-Simple                  noarch           1:3.28-4.el7                base           216 k
 perl-Pod-Usage                   noarch           1.63-3.el7                  base            27 k
 perl-Scalar-List-Utils           x86_64           1.27-248.el7                base            36 k
 perl-Socket                      x86_64           2.010-4.el7                 base            49 k
 perl-Storable                    x86_64           2.45-3.el7                  base            77 k
 perl-Text-ParseWords             noarch           3.29-4.el7                  base            14 k
 perl-Time-HiRes                  x86_64           4:1.9725-3.el7              base            45 k
 perl-Time-Local                  noarch           1.2300-2.el7                base            24 k
 perl-constant                    noarch           1.27-2.el7                  base            19 k
 perl-libs                        x86_64           4:5.16.3-292.el7            base           688 k
 perl-macros                      x86_64           4:5.16.3-292.el7            base            43 k
 perl-parent                      noarch           1:0.225-244.el7             base            12 k
 perl-podlators                   noarch           2.5.1-3.el7                 base           112 k
 perl-threads                     x86_64           1.87-4.el7                  base            49 k
 perl-threads-shared              x86_64           1.43-6.el7                  base            39 k
 vim-common                       x86_64           2:7.4.160-2.el7             base           5.9 M
 vim-filesystem                   x86_64           2:7.4.160-2.el7             base           9.8 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ (+30 個の依存関係のパッケージ)

総ダウンロード容量: 18 M
インストール容量: 60 M
Is this ok [y/d/N]:
```

上記のログを見て頂ければわかると思いますが、
依存性を解決しているのは、依存パッケージをyumが自動的にチェックし、
OSにインストールされていないモノを一覧として表示してくれます。

最下部にこれで良いのか？と聞かれていますので、[y]を入力してあげるとダウンロードが開始します。

```shell-session
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/base/packages/gpm-libs-1.20.7-5.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
gpm-libs-1.20.7-5.el7.x86_64.rpm の公開鍵がインストールされていません
(1/31): gpm-libs-1.20.7-5.el7.x86_64.rpm                                     |  32 kB  00:00:00
(2/31): perl-Carp-1.26-244.el7.noarch.rpm                                    |  19 kB  00:00:00
(3/31): perl-Encode-2.51-7.el7.x86_64.rpm                                    | 1.5 MB  00:00:01
(4/31): perl-Exporter-5.68-3.el7.noarch.rpm                                  |  28 kB  00:00:00
(5/31): perl-File-Path-2.09-2.el7.noarch.rpm                                 |  26 kB  00:00:00
(6/31): perl-File-Temp-0.23.01-3.el7.noarch.rpm                              |  56 kB  00:00:00
(7/31): perl-Filter-1.49-3.el7.x86_64.rpm                                    |  76 kB  00:00:00
(8/31): perl-Getopt-Long-2.40-2.el7.noarch.rpm                               |  56 kB  00:00:00
(9/31): perl-5.16.3-292.el7.x86_64.rpm                                       | 8.0 MB  00:00:02
(10/31): perl-HTTP-Tiny-0.033-3.el7.noarch.rpm                               |  38 kB  00:00:00
(11/31): perl-Pod-Perldoc-3.20-4.el7.noarch.rpm                              |  87 kB  00:00:00
(12/31): perl-PathTools-3.40-5.el7.x86_64.rpm                                |  82 kB  00:00:00
(13/31): perl-Pod-Escapes-1.04-292.el7.noarch.rpm                            |  51 kB  00:00:00
(14/31): perl-Pod-Usage-1.63-3.el7.noarch.rpm                                |  27 kB  00:00:00
(15/31): perl-Pod-Simple-3.28-4.el7.noarch.rpm                               | 216 kB  00:00:00
(16/31): perl-Scalar-List-Utils-1.27-248.el7.x86_64.rpm                      |  36 kB  00:00:00
(17/31): perl-Socket-2.010-4.el7.x86_64.rpm                                  |  49 kB  00:00:00
(18/31): perl-Text-ParseWords-3.29-4.el7.noarch.rpm                          |  14 kB  00:00:00
(19/31): perl-Storable-2.45-3.el7.x86_64.rpm                                 |  77 kB  00:00:00
(20/31): perl-Time-Local-1.2300-2.el7.noarch.rpm                             |  24 kB  00:00:00
(21/31): perl-constant-1.27-2.el7.noarch.rpm                                 |  19 kB  00:00:00
(22/31): perl-Time-HiRes-1.9725-3.el7.x86_64.rpm                             |  45 kB  00:00:00
(23/31): perl-parent-0.225-244.el7.noarch.rpm                                |  12 kB  00:00:00
(24/31): perl-libs-5.16.3-292.el7.x86_64.rpm                                 | 688 kB  00:00:00
(25/31): perl-macros-5.16.3-292.el7.x86_64.rpm                               |  43 kB  00:00:00
(26/31): perl-threads-1.87-4.el7.x86_64.rpm                                  |  49 kB  00:00:00
(27/31): perl-threads-shared-1.43-6.el7.x86_64.rpm                           |  39 kB  00:00:00
(28/31): perl-podlators-2.5.1-3.el7.noarch.rpm                               | 112 kB  00:00:00
(29/31): vim-filesystem-7.4.160-2.el7.x86_64.rpm                             | 9.8 kB  00:00:00
(30/31): vim-enhanced-7.4.160-2.el7.x86_64.rpm                               | 1.0 MB  00:00:01
(31/31): vim-common-7.4.160-2.el7.x86_64.rpm                                 | 5.9 MB  00:00:01
----------------------------------------------------------------------------------------------------
合計                                                                3.4 MB/s |  18 MB  00:00:05
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 から鍵を取得中です。
Importing GPG key 0xF4A80EB5:
 Userid     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 Fingerprint: 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 Package    : centos-release-7-4.1708.el7.centos.x86_64 (@anaconda)
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
上記の処理を行います。よろしいでしょうか？ [y/N]
```

そのまま[y]を入力するとインストールが開始します。

```shell-session
上記の処理を行います。よろしいでしょうか？ [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : 1:perl-parent-0.225-244.el7.noarch                                 1/31
  インストール中          : perl-HTTP-Tiny-0.033-3.el7.noarch                                  2/31
  インストール中          : perl-podlators-2.5.1-3.el7.noarch                                  3/31
  インストール中          : perl-Pod-Perldoc-3.20-4.el7.noarch                                 4/31
  インストール中          : 1:perl-Pod-Escapes-1.04-292.el7.noarch                             5/31
  インストール中          : perl-Text-ParseWords-3.29-4.el7.noarch                             6/31
  インストール中          : perl-Encode-2.51-7.el7.x86_64                                      7/31
  インストール中          : perl-Pod-Usage-1.63-3.el7.noarch                                   8/31
  インストール中          : 4:perl-macros-5.16.3-292.el7.x86_64                                9/31
  インストール中          : 4:perl-libs-5.16.3-292.el7.x86_64                                 10/31
  インストール中          : perl-Storable-2.45-3.el7.x86_64                                   11/31
  インストール中          : perl-Exporter-5.68-3.el7.noarch                                   12/31
  インストール中          : perl-constant-1.27-2.el7.noarch                                   13/31
  インストール中          : perl-Time-Local-1.2300-2.el7.noarch                               14/31
  インストール中          : perl-Socket-2.010-4.el7.x86_64                                    15/31
  インストール中          : perl-Carp-1.26-244.el7.noarch                                     16/31
  インストール中          : perl-PathTools-3.40-5.el7.x86_64                                  17/31
  インストール中          : perl-Scalar-List-Utils-1.27-248.el7.x86_64                        18/31
  インストール中          : perl-File-Temp-0.23.01-3.el7.noarch                               19/31
  インストール中          : perl-File-Path-2.09-2.el7.noarch                                  20/31
  インストール中          : perl-threads-shared-1.43-6.el7.x86_64                             21/31
  インストール中          : perl-threads-1.87-4.el7.x86_64                                    22/31
  インストール中          : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                             23/31
  インストール中          : perl-Filter-1.49-3.el7.x86_64                                     24/31
  インストール中          : 1:perl-Pod-Simple-3.28-4.el7.noarch                               25/31
  インストール中          : perl-Getopt-Long-2.40-2.el7.noarch                                26/31
  インストール中          : 4:perl-5.16.3-292.el7.x86_64                                      27/31
  インストール中          : gpm-libs-1.20.7-5.el7.x86_64                                      28/31
  インストール中          : 2:vim-filesystem-7.4.160-2.el7.x86_64                             29/31
  インストール中          : 2:vim-common-7.4.160-2.el7.x86_64                                 30/31
  インストール中          : 2:vim-enhanced-7.4.160-2.el7.x86_64                               31/31
  検証中                  : perl-HTTP-Tiny-0.033-3.el7.noarch                                  1/31
  検証中                  : perl-threads-shared-1.43-6.el7.x86_64                              2/31
  検証中                  : perl-Storable-2.45-3.el7.x86_64                                    3/31
  検証中                  : 2:vim-filesystem-7.4.160-2.el7.x86_64                              4/31
  検証中                  : perl-Exporter-5.68-3.el7.noarch                                    5/31
  検証中                  : perl-constant-1.27-2.el7.noarch                                    6/31
  検証中                  : perl-PathTools-3.40-5.el7.x86_64                                   7/31
  検証中                  : 4:perl-macros-5.16.3-292.el7.x86_64                                8/31
  検証中                  : 1:perl-parent-0.225-244.el7.noarch                                 9/31
  検証中                  : 4:perl-5.16.3-292.el7.x86_64                                      10/31
  検証中                  : perl-File-Temp-0.23.01-3.el7.noarch                               11/31
  検証中                  : 1:perl-Pod-Simple-3.28-4.el7.noarch                               12/31
  検証中                  : perl-Time-Local-1.2300-2.el7.noarch                               13/31
  検証中                  : gpm-libs-1.20.7-5.el7.x86_64                                      14/31
  検証中                  : 4:perl-libs-5.16.3-292.el7.x86_64                                 15/31
  検証中                  : perl-Pod-Perldoc-3.20-4.el7.noarch                                16/31
  検証中                  : perl-Socket-2.010-4.el7.x86_64                                    17/31
  検証中                  : perl-Carp-1.26-244.el7.noarch                                     18/31
  検証中                  : 2:vim-common-7.4.160-2.el7.x86_64                                 19/31
  検証中                  : perl-Scalar-List-Utils-1.27-248.el7.x86_64                        20/31
  検証中                  : 1:perl-Pod-Escapes-1.04-292.el7.noarch                            21/31
  検証中                  : perl-Pod-Usage-1.63-3.el7.noarch                                  22/31
  検証中                  : perl-Encode-2.51-7.el7.x86_64                                     23/31
  検証中                  : perl-podlators-2.5.1-3.el7.noarch                                 24/31
  検証中                  : perl-Getopt-Long-2.40-2.el7.noarch                                25/31
  検証中                  : 2:vim-enhanced-7.4.160-2.el7.x86_64                               26/31
  検証中                  : perl-File-Path-2.09-2.el7.noarch                                  27/31
  検証中                  : perl-threads-1.87-4.el7.x86_64                                    28/31
  検証中                  : 4:perl-Time-HiRes-1.9725-3.el7.x86_64                             29/31
  検証中                  : perl-Filter-1.49-3.el7.x86_64                                     30/31
  検証中                  : perl-Text-ParseWords-3.29-4.el7.noarch                            31/31

インストール:
  vim-enhanced.x86_64 2:7.4.160-2.el7

依存性関連をインストールしました:
  gpm-libs.x86_64 0:1.20.7-5.el7                 perl.x86_64 4:5.16.3-292.el7
  perl-Carp.noarch 0:1.26-244.el7                perl-Encode.x86_64 0:2.51-7.el7
  perl-Exporter.noarch 0:5.68-3.el7              perl-File-Path.noarch 0:2.09-2.el7
  perl-File-Temp.noarch 0:0.23.01-3.el7          perl-Filter.x86_64 0:1.49-3.el7
  perl-Getopt-Long.noarch 0:2.40-2.el7           perl-HTTP-Tiny.noarch 0:0.033-3.el7
  perl-PathTools.x86_64 0:3.40-5.el7             perl-Pod-Escapes.noarch 1:1.04-292.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7           perl-Pod-Simple.noarch 1:3.28-4.el7
  perl-Pod-Usage.noarch 0:1.63-3.el7             perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-4.el7               perl-Storable.x86_64 0:2.45-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7       perl-Time-HiRes.x86_64 4:1.9725-3.el7
  perl-Time-Local.noarch 0:1.2300-2.el7          perl-constant.noarch 0:1.27-2.el7
  perl-libs.x86_64 4:5.16.3-292.el7              perl-macros.x86_64 4:5.16.3-292.el7
  perl-parent.noarch 1:0.225-244.el7             perl-podlators.noarch 0:2.5.1-3.el7
  perl-threads.x86_64 0:1.87-4.el7               perl-threads-shared.x86_64 0:1.43-6.el7
  vim-common.x86_64 2:7.4.160-2.el7              vim-filesystem.x86_64 2:7.4.160-2.el7

完了しました!
[skanehira@localhost ~]$
```

これで無事にインストール完了しました！！
たったこれだけで、ソフトウェアのインストールを出来てしまいます。
便利です！

ちなみにyumのhelpを見ると色んな機能が付いていますね〜

```shell-session
[skanehira@localhost ~]$ yum -h
読み込んだプラグイン:fastestmirror
Usage: yum [options] COMMAND

List of Commands:

check          rpmdb の問題を確認する
check-update   更新に利用できるパッケージを確認する
clean          キャッシュデータを削除する
deplist        パッケージの依存性の一覧を表示する
distribution-synchronization 最新の利用可能なバージョンへインストール済みパッケージを同期する
downgrade      パッケージのダウングレード
erase          システムから削除するパッケージ
fs             Acts on the filesystem data of the host, mainly for removing docs/lanuages for minimal hosts.
fssnapshot     Creates filesystem snapshots, or lists/deletes current snapshots.
groups         グループ情報の表示または使用
help           役立つ使い方のメッセージを表示する
history        トランザクション履歴を表示、使用する
info           パッケージもしくはパッケージのグループについての詳細を表示する
install        システムにパッケージをインストールする
list           パッケージグループの一覧を表示する
load-transaction filename から保存済みトランザクションを読み込む
makecache      メタデータキャッシュを生成する
provides       指定値を提供するパッケージを検索する
reinstall      パッケージの再インストール
repo-pkgs      Treat a repo. as a group of packages, so we can install/remove all of them
repolist       ソフトウェアリポジトリーの構成を表示する
search         指定した文字列でパッケージの詳細を検索する
shell          対話型の yum シェルを実行する
swap           Simple way to swap packages, instead of using shell
update         システムのパッケージを更新する
update-minimal Works like upgrade, but goes to the 'newest' package match which fixes a problem that affects your system
updateinfo     Acts on repository update information
upgrade        不要になったパッケージを考慮しながらパッケージを更新する
version        ホストの利用できるリポジトリーのバージョンを表示する
```

ちなみに、こういうのもありました！

https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsheet_1214_jcs_print-ja.pdf

ググればyumについて色々出てきますが、
たまにはググらず、自分で色々見てみようと思っています。

- アンインストール

インストールしたパッケージをアンインストールしたい場合はremoveを使用します。

```shell-session
[skanehira@localhost ~]$ sudo yum remove vim
[sudo] skanehira のパスワード:
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ vim-enhanced.x86_64 2:7.4.160-2.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました

==============================================================================================================================================================================================================================================
 Package                                                     アーキテクチャー                                      バージョン                                                      リポジトリー                                          容量
==============================================================================================================================================================================================================================================
削除中:
 vim-enhanced                                                x86_64                                                2:7.4.160-2.el7                                                 @base                                                2.2 M

トランザクションの要約
==============================================================================================================================================================================================================================================
削除  1 パッケージ

インストール容量: 2.2 M
上記の処理を行います。よろしいでしょうか？ [y/N]
```

削除するパッケージを確認して問題なければ[y]を入力して下さい。
※アンインストールするときは、依存パッケージも同時にアンインストールされます。

```shell-session
上記の処理を行います。よろしいでしょうか？ [y/N]y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  削除中                  : 2:vim-enhanced-7.4.160-2.el7.x86_64                                                                                                                                                                           1/1
  検証中                  : 2:vim-enhanced-7.4.160-2.el7.x86_64                                                                                                                                                                           1/1

削除しました:
  vim-enhanced.x86_64 2:7.4.160-2.el7

完了しました!
[skanehira@localhost ~]$ vim
-bash: /usr/bin/vim: そのようなファイルやディレクトリはありません
[skanehira@localhost ~]$
```

- バージョン指定によるインストール

yumはバージョン指定によるインストールも可能です。
その場合、バージョン指定をしてあげるだけでよいです。

まずインストール可能なバージョンを見ます。

```shell-session
[skanehira@localhost ~]$ yum --showduplicate list kernel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.fairway.ne.jp
 * extras: mirror.0x.sg
 * updates: mirror.0x.sg
インストール済みパッケージ
kernel.x86_64                                    3.10.0-693.el7                                          @anaconda
利用可能なパッケージ
kernel.x86_64                                    3.10.0-693.el7                                          base
kernel.x86_64                                    3.10.0-693.1.1.el7                                      updates
kernel.x86_64                                    3.10.0-693.2.1.el7                                      updates
kernel.x86_64                                    3.10.0-693.2.2.el7                                      updates
kernel.x86_64                                    3.10.0-693.5.2.el7                                      updates
kernel.x86_64                                    3.10.0-693.11.1.el7                                     updates
kernel.x86_64                                    3.10.0-693.11.6.el7                                     updates
kernel.x86_64                                    3.10.0-693.17.1.el7                                     updates
[skanehira@localhost ~]$
```

今回は[kernel-3.10.0-693.5.2.el7]をインストールしてみましょう。

```shell-session
[skanehira@localhost ~]$ sudo yum install kernel-3.10.0-693.5.2.el7
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: download.nus.edu.sg
 * extras: download.nus.edu.sg
 * updates: download.nus.edu.sg
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:3.10.0-693.5.2.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

==================================================================================================================
 Package                アーキテクチャー       バージョン                           リポジトリー             容量
==================================================================================================================
インストール中:
 kernel                 x86_64                 3.10.0-693.5.2.el7                   updates                  43 M

トランザクションの要約
==================================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 43 M
インストール容量: 59 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
kernel-3.10.0-693.5.2.el7.x86_64.rpm                                                       |  43 MB  00:00:11
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : kernel-3.10.0-693.5.2.el7.x86_64                                                  1/1
  検証中                  : kernel-3.10.0-693.5.2.el7.x86_64                                                  1/1

インストール:
  kernel.x86_64 0:3.10.0-693.5.2.el7

完了しました!
[skanehira@localhost ~]$
```

インストール済みかを確認します。
3.10.0-693.5.2.el7がありますねー

```shell-session
[skanehira@localhost ~]$ yum --showduplicate list kernel
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: download.nus.edu.sg
 * extras: download.nus.edu.sg
 * updates: download.nus.edu.sg
インストール済みパッケージ
kernel.x86_64                                    3.10.0-693.el7                                          @anaconda
kernel.x86_64                                    3.10.0-693.5.2.el7                                      @updates
利用可能なパッケージ
kernel.x86_64                                    3.10.0-693.el7                                          base
kernel.x86_64                                    3.10.0-693.1.1.el7                                      updates
kernel.x86_64                                    3.10.0-693.2.1.el7                                      updates
kernel.x86_64                                    3.10.0-693.2.2.el7                                      updates
kernel.x86_64                                    3.10.0-693.5.2.el7                                      updates
kernel.x86_64                                    3.10.0-693.11.1.el7                                     updates
kernel.x86_64                                    3.10.0-693.11.6.el7                                     updates
kernel.x86_64                                    3.10.0-693.17.1.el7                                     updates
[skanehira@localhost ~]$
```

# 最後に
Linuxでソフトウェアをインストールするときは、yumを使いましょう！
もちろん特定のバージョンのソフトウェアを使ってストなどもありますが、それでもかなり便利と思います。

次回は最近気になっているDockerについてちょっと勉強したいと考えています。
VMよりもDockerのが手軽に環境を作れるらしいので、気になります。