Server Build Exercises on AWS (Amazon Web Services) 2022 edition

yum

yum は redhat 系 distro のパッケージ管理システムです。 後継の dnf へ変更されつつあります。 いまは、その端境期ですが、最終的に、いつ yum が消えるのかは不明…

シンタックスは次のとおりです

yum [オプション] コマンド [オプション] [パッケージ名]

引数で[パッケージ名]となっているのは、パッケージ名がつかないコマンドもあるからです

たくさんのコマンドやオプションがありますが、下記のいくつかを知っていれば実用的には十分でしょう

普段つかいの yum (基本的な使い方)

アップデート

yum update

パッケージのデータベースを更新し、 更新するべきパッケージがあれば、 更新(新しいバージョンをインストール)してください。 インストールする前に[y/n]と聞いてくるので、インストールしてよいならy

[y/n]と聞いてくれるのは安全のためです。 ソフトウエアの組み合わせによっては、なにかを最新版にすると動かなくなったりするので、 念のため[y/n]と聞いてくれます。 大丈夫、そういうことは気にしない(滅多にない)と信じる強者は、 -yオプションをつけて、 どんな時でも最新版にしちゃいましょう

yum -y update

インストール

yum install パッケージ名

[例]
yum install nginx

問題は、インストールしたいパッケージ名が分からない時です ;-)

【補足】 なお、パッケージ名をさがす操作例を、 このページの最後に載せておくので参考にしてください

パッケージ名をさがす

新しいソフトをインストールする場合、そもそもパッケージの名前がわかりません ;_;

パッケージ管理システムのデータベースを検索するには次のコマンドを使います

yum search パッケージ名

部分的に一致すれば候補を表示するので、単語の一部だけでもいれて表示させてみましょう。 よって割と雑な探し方でもよくて、

yum search editor

とすれば、エディタに関係するものが、すべて出てきます。 ただ、表示される短い説明だけでは、わからない部分も多くて、 結局 google することが多いんですけどね… (-o-;;)

いちおう有名ソフトウエアのパッケージ名は、そのままなので大丈夫だと思います。 たとえば本編で使う nginx は nginx です。 でも、同じく WWW サーバの代表格 apache のパッケージ名は httpd になります (apache ではインストールされるプログラムが httpd です)。 このへんはソフトウエアの名前の由来にまつわるものなので、 有名どころは無理やり覚えてください。 (ちなみに apache の前身が NCSA httpd = HTTP daemon で、そのまま httpd という名を踏襲しています)

バージョンを指定した方が良いものもあります。 たとえば Python はバージョン 2 と 3 があり、しかも後方互換性がありません。 でも python 2 を長く使っているために、2 が標準、3 がオプションという distro もあれば、 方針が逆の distro もありえます。

yum install python3 

なら、たいてい大丈夫。

mysql のように、さらに由来の複雑なものもあります。 mysql 社が Oracle 社に買収されて、Oracle社の mysql 商用版と mysql community 版、 mysql原作者がスピンオフして開発している mariadb と3系統あります。 これは OSS の歴史的変遷を知らないと区別できませんけども… (ちなみに my も maria も娘さんの名前由来だそうです)。 そんなわけで、 いちばんライセンスが無難な mariadb のライブラリとクライアントが標準でインストールされていたりします (Amazon Linux 2 は、このパターン)

削除したい

yum remove nginx

もくは

yum erase nginx

削除する前に[y/n]と聞いてくるので削除してよいならy

実行例「パッケージを検索する」

Q: lsof コマンドが必要らしいので、インストールしたいけれど、パッケージ名はなんだろう?
A: とりあえず、lsof という名前でインストールしてみよう… あ、これは lsof で正解の例でした!

% yum install lsof
Loaded plugins: ovl, priorities
Resolving Dependencies
--> Running transaction check
---> Package lsof.x86_64 0:4.87-6.amzn2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================
 Package         Arch              Version                  Repository             Size
========================================================================================
Installing:
 lsof            x86_64            4.87-6.amzn2             amzn2-core            332 k

Transaction Summary
========================================================================================
Install  1 Package

Total download size: 332 k
Installed size: 927 k
Is this ok [y/d/N]:

   ... 以下略 ...

Q: ip コマンドも必要らしいのですが、パッケージ名がわからない…
A: やってみましょう … だめでした orz

% yum install ip
Loaded plugins: ovl, priorities
No package ip available.
Error: Nothing to do

検索してみましょう

% yum search ip
Loaded plugins: ovl, priorities
=============================== N/S matched: ip ================================
GeoIP.x86_64 : Library for country/city/organization to IP address or hostname
             : mapping
GeoIP.i686 : Library for country/city/organization to IP address or hostname
           : mapping
	   
 ... 合計 629 行も出力されるので以下、略 ...

ip なんてマッチするものが多すぎて全然わかりません(@-@;;)

こういうとき、 コマンド名からパッケージ名は、どうやって調べるの?と言うと、yum provides です

% yum provides ip
Loaded plugins: ovl, priorities
iproute-3.10.0-87.amzn2.x86_64 : Advanced IP routing and network device
                               : configuration tools
Repo        : amzn2-core
Matched from:
Filename    : /sbin/ip

    ... たくさん出力されるので、以下略 ...

3行目にある iproute-3.10.0-87.amzn2.x86_64 の部分がパッケージ名になります。 いろいろなバージョン番号が表示されますが、 基本的に最新版をいれるので、バージョン名以降は不用で iproute をインストールします

% yum install iproute
yum install iproute
Loaded plugins: ovl, priorities
amzn2-core                                                                                                                                                             | 3.7 kB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package iproute.x86_64 0:4.15.0-1.amzn2.0.4 will be installed
--> Processing Dependency: libmnl.so.0(LIBMNL_1.0)(64bit) for package: iproute-4.15.0-1.amzn2.0.4.x86_64
--> Processing Dependency: libmnl.so.0()(64bit) for package: iproute-4.15.0-1.amzn2.0.4.x86_64
--> Running transaction check
---> Package libmnl.x86_64 0:1.0.3-7.amzn2.0.2 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==============================================================================================================================================================================================
 Package                                   Arch                                     Version                                                Repository                                    Size
==============================================================================================================================================================================================
Installing:
 iproute                                   x86_64                                   4.15.0-1.amzn2.0.4                                     amzn2-core                                   510 k
Installing for dependencies:
 libmnl                                    x86_64                                   1.0.3-7.amzn2.0.2                                      amzn2-core                                    23 k

Transaction Summary
==============================================================================================================================================================================================
Install  1 Package (+1 Dependent package)

Total download size: 533 k
Installed size: 1.3 M
Is this ok [y/d/N]:

   ... 以下略 ...
Last updated on 5 Dec 2021
Published on 5 Dec 2021
Copyright (C) 2021-2022 Ken'ichi Fukamachi, All rights reserved. CC BY-NC-SA 4.0
We appreciate AWS Academy Japan for the offer of the learning environment.

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.