yumコマンドとCentOSにおける注意点
CentOSなどのRedHat系のLinuxでは、yumコマンドを使用して、配信されているパッケージのリポジトリから、 様々なソフトをインストールすることが出来る。
yumでインストール可能なパッケージとインストール済みのパッケージを表示したければ
yum list コマンドをオプション無しで実行する。
sudo yum list
yumで利用可能なパッケージを確認したければ
yum list available コマンドを使用する。 表示されるパッケージ数が多いので、パイプを利用して以下のように使うことが多い。 (例)MySQL関連のパッケージを一覧表示する場合
sudo yum list available | grep mysql
yumでアップデート可能なパッケージを確認したければ
yum list updates コマンドを使用する。
sudo yum list updates
yum check-update でも確認できる。
sudo yum check-update
yumでアップデート可能なパッケージの各バージョンを確認したければ
yum --showduplicates list コマンドを使う。
sudo yum --showduplicates list パッケージ名
sudo yum info でも見れる。
sudo yum info パッケージ名
yumで配信されているパッケージを最新状態にしたければ
yum update コマンドを使用する。
sudo yum update
yumでインストールした履歴を確認したければ
yum history list コマンドを使用する。
sudo yum history list
読み込んだプラグイン:fastestmirror, langpacks
ID | コマンドライン | 日時 | 操作 | 変更
-------------------------------------------------------------------------------
27 | --security update | 2019-09-24 11:50 | I, U | 80 EE
26 | install createrepo | 2019-09-24 11:43 | Install | 3
25 | update bind* | 2019-04-25 19:18 | I, U | 32 EE
24 | update bind* | 2018-05-21 18:19 | Update | 6
23 | update bind* | 2018-01-23 10:16 | Update | 6
22 | update bind* | 2018-01-17 15:51 | Update | 6
21 | update bind* | 2017-09-14 11:28 | Update | 6 EE
20 | update bind* | 2017-07-06 14:50 | Update | 6 EE
19 | update bind* | 2017-05-11 15:23 | Update | 6
18 | update bind* | 2017-03-03 21:04 | Update | 6
17 | update bind* | 2017-02-15 11:57 | Update | 6
16 | update yum | 2017-01-13 12:06 | Update | 2
15 | update bind* | 2016-12-21 13:33 | I, U | 7 EE
14 | update bind | 2016-10-04 22:16 | Update | 6
13 | update bind | 2016-09-28 14:15 | Update | 6
12 | update | 2016-02-18 16:40 | I, U | 336 EE
11 | update bind | 2016-01-21 13:10 | Update | 6 EE
10 | -y install bind bind-chr | 2015-11-24 17:03 | I, U | 6
9 | remove ntp | 2015-09-15 15:41 | Erase | 1
8 | -y install ntp | 2015-09-15 15:33 | Install | 2
history list
こんな感じで表示されるので、その履歴の詳細を確認したければ、ID番号を指定して下記のコマンドを実行。
yum history info ID番号
実行すると、指定したID番号でインストールや更新した一覧が表示される。
yumでインストールしたパッケージを確認するなら
sudo yum list installed
絞り込みしたければ、grepを使う。
sudo yum list installed | grep postfix
yumでインストールしたパッケージのバージョンの履歴を確認したければ
sudo yum history package-list postfix
読み込んだプラグイン:fastestmirror, langpacks
ID | 操作 | Package
-------------------------------------------------------------------------------
1 | インストール | postfix-2:2.10.1-6.el7.x86_64
history package-list
のように、パッケージ名を指定し、コマンドを実行。
複数のバージョンの更新履歴があれば以下のように表示される。
yumでインストールしたパッケージの依存関係を調べたければ
yum deplist コマンドを使用する。絞り込みしたければ、grepを使う。
sudo yum deplist postfix | grep ldap
provider: openldap.x86_64 2.4.44-21.el7_6
依存性 : libldap-2.4.so.2()(64bit)
provider: openldap.x86_64 2.4.44-21.el7_6
yumのリポジトリを新たに追加するには
sudo yum install epel-release
といった感じ。
参考URL
追加したyum リポジトリを一覧で確認するには
sudo yum repolist all
でOK。有効なものと無効なものが表示される。
CentOSでのセキュリティアップデートをyumでやる場合の注意点
本来「yum --security update」と実行すると、セキュリティパッチのみアップデートされるはずだが、 CentOS7の場合はリポジトリにセキュリティアップデート情報が提供されていないので、 通常のアップデートが実行されてしまう。
そこで、セキュリティアップデートができるように、 CentOS用のセキュリティ情報を提供しているCEFS projectの情報を基に、 ローカルリポジトリを導入することで、yumでセキュリティアップデートが行えるようにしなければいけない。
CentOS公式のコミュニティのフォーラム
上記では、
と回答しており、yumリポジトリのセキュリティプラグインに必要なメタデータを提供していないとしている。
yum update で対応せよ。とのこと。
また、こちらのgithubリポジトリはまだ活発で、CentOSのsecurity update toolを開発している。こちらのリポジトリの活用も検討してみるのも良いかもしれない。
参考URL(GitHub)
参考URL(GitHub)
https://github.com/vmfarms/generate_updateinfo/blob/master/generate_updateinfo.py
CentOS用のセキュリティ情報を提供しているCEFS projectというものがあるので、このプロジェクトが提供している情報をもとに リンク先のPythonのスクリプトで、
updateinfo.xmlを作成し、ローカルリポジトリを導入してそのリポジトリをSecurityのパッケージのリポジトリにしてしまうというもの。
上記の対応でもアップデートされないyumパッケージがあった時に分かったこと※重要
実は、CEFS projectの情報を基に作成したyumリポジトリでは、CEFS project自体に、「エポック番号」に対応していないことが yum update --security してもアップデートされないパッケージがある原因だった!
参考URL
参考URL(GitHub)
「エポック番号」とは
参考URL(GitHub)
じゃあ、どうやってyumパッケージのセキュリティ管理していくのか
代替策として、Vulsを使っていくのは有効かもしれない。
この記事が気に入ったらサポートをしてみませんか?