CentOSではyumでセキュリティ関連のパッケージのみ導入する場合は「yum-plugin-security」というパッケージを利用することで、セキュリティ関連のアップデートをかけることができる…
のだけど、CentOSではこのパッケージを利用しても「No packages needed for security」と出力され、セキュリティアップデートは実行されない。同じRHELベースのAmazonLinuxなどでは実行されるのに…
[root@BS-PUB-CENT7-01 ~]# yum --security update
読み込んだプラグイン:fastestmirror
base | 3.6 kB 00:00:00
elasticsearch-2.x | 2.9 kB 00:00:00
epel/x86_64/metalink | 6.3 kB 00:00:00
extras | 3.4 kB 00:00:00
graylog | 2.9 kB 00:00:00
mongodb-org-3.2 | 2.5 kB 00:00:00
updates | 3.4 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: download.nus.edu.sg
* epel: mirror.rise.ph
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
--> kernel-tools-3.10.0-327.28.3.el7.x86_64 from updates removed (updateinfo)
--> kernel-3.10.0-327.28.3.el7.x86_64 from updates removed (updateinfo)
--> python-perf-3.10.0-327.28.2.el7.x86_64 from @updates removed (updateinfo)
--> kernel-tools-libs-3.10.0-327.28.2.el7.x86_64 from @updates removed (updateinfo)
--> python-perf-3.10.0-327.28.3.el7.x86_64 from updates removed (updateinfo)
--> elasticsearch-2.4.0-1.noarch from elasticsearch-2.x removed (updateinfo)
--> kernel-tools-3.10.0-327.28.2.el7.x86_64 from @updates removed (updateinfo)
--> kernel-tools-libs-3.10.0-327.28.3.el7.x86_64 from updates removed (updateinfo)
--> elasticsearch-2.3.5-1.noarch from @elasticsearch-2.x removed (updateinfo)
No packages needed for security; 5 packages available
依存性の解決をしています
これは、CentOSのリポジトリではセキュリティアップデートの情報が提供されていないことが原因らしい。
つまり、その情報を提供しているリポジトリを別途導入してやることで利用できるようになるということだ。
で、CentOS用のセキュリティ情報を提供しているCEFS projectというものがあるので、このプロジェクトが提供している情報をもとにローカルリポジトリを導入してやることで、yumでセキュリティアップデートが行えるようになる。こちらに有志が作ったリポジトリ導入スクリプトがあるので、今回はこれをCentOS 7に導入してやる。
まず、以下のコマンドで実行させるスクリプトをダウンロードする。
(CentOS 7ではyum-plugin-securityはyumに統合されているので不要だが、念のため記述)
yum install createrepo yum-plugin-security bzip2
mkdir -p /security && cd /security
wget https://raw.githubusercontent.com/vmfarms/generate_updateinfo/master/generate_updateinfo.py
ダウンロードしたスクリプトファイルで、リポジトリの保存先、バージョン(デフォルトがCentOS6なので、CentOS7への書き換え)を行う。
2016/09/27 追記。オプションで指定できるようになったから↓のsedいらないかも。
sed -e '/^BUILD_PREFIX = /s/"\/tmp"/"\/security"/g' \
-e '/^RELEASES = /s/6/7/g' \
-i.bk /security/generate_updateinfo.py
スクリプト編集後、以下のコマンドでリポジトリを作成、登録する。
2016/09/27 変更。「generate_updateinfo.py」実行時にオプションで場所とバージョンを指定できるようになっているので追記。
createrepo /security
python generate_updateinfo.py --destination=/security --release=7 <(curl -s http://cefs.steve-meier.de/errata.latest.xml.bz2 | bzip2 -dc)
modifyrepo /security/updateinfo-7/updateinfo.xml /security/repodata/
最後に、参照するリポジトリとして登録を行う。
cp /etc/yum.repos.d/CentOS-Base.repo{,.bk}
cat << "EOF" >> /etc/yum.repos.d/CentOS-Base.repo
[security]
name=CentOS-$releasever - Security
baseurl=file:///security
EOF
これで、yumからセキュリティアップデートが行えるようになった。
yum --security update
[root@BS-PUB-CENT7-01 security]# yum --security update
読み込んだプラグイン:fastestmirror
base | 3.6 kB 00:00:00
elasticsearch-2.x | 2.9 kB 00:00:00
epel/x86_64/metalink | 6.3 kB 00:00:00
extras | 3.4 kB 00:00:00
graylog | 2.9 kB 00:00:00
mongodb-org-3.2 | 2.5 kB 00:00:00
security | 3.3 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/2): security/updateinfo | 33 kB 00:00:00
(2/2): security/primary_db | 1.1 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirror.nus.edu.sg
* epel: kartolo.sby.datautama.net.id
* extras: mirror.nus.edu.sg
* updates: mirror.nus.edu.sg
--> elasticsearch-2.4.0-1.noarch from elasticsearch-2.x removed (updateinfo)
--> elasticsearch-2.3.5-1.noarch from @elasticsearch-2.x removed (updateinfo)
4 package(s) needed (+0 related) for security, out of 5 available
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ kernel.x86_64 0:3.10.0-327.28.3.el7 を インストール
---> パッケージ kernel-tools.x86_64 0:3.10.0-327.28.2.el7 を 更新
---> パッケージ kernel-tools.x86_64 0:3.10.0-327.28.3.el7 を アップデート
---> パッケージ kernel-tools-libs.x86_64 0:3.10.0-327.28.2.el7 を 更新
---> パッケージ kernel-tools-libs.x86_64 0:3.10.0-327.28.3.el7 を アップデート
---> パッケージ python-perf.x86_64 0:3.10.0-327.28.2.el7 を 更新
---> パッケージ python-perf.x86_64 0:3.10.0-327.28.3.el7 を アップデート
--> 依存性解決を終了しました。
依存性を解決しました
===============================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
===============================================================================================
インストール中:
kernel x86_64 3.10.0-327.28.3.el7 updates 33 M
更新します:
kernel-tools x86_64 3.10.0-327.28.3.el7 updates 2.4 M
kernel-tools-libs x86_64 3.10.0-327.28.3.el7 updates 2.3 M
python-perf x86_64 3.10.0-327.28.3.el7 updates 2.4 M
トランザクションの要約
===============================================================================================
インストール 1 パッケージ
更新 3 パッケージ
総ダウンロード容量: 40 M
Is this ok [y/d/N]: y
Downloading packages:
updates/7/x86_64/prestodelta | 698 kB 00:00:03
(1/4): python-perf-3.10.0-327.28.3.el7.x86_64.rpm | 2.4 MB 00:00:04
(2/4): kernel-tools-libs-3.10.0-327.28.3.el7.x86_64.rpm | 2.3 MB 00:00:04
(3/4): kernel-3.10.0-327.28.3.el7.x86_64.rpm | 33 MB 00:00:07
(4/4): kernel-tools-3.10.0-327.28.3.el7.x86_64.rpm | 2.4 MB 00:00:06
-----------------------------------------------------------------------------------------------
合計 5.5 MB/s | 40 MB 00:00:07
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
更新します : kernel-tools-libs-3.10.0-327.28.3.el7.x86_64 1/7
更新します : kernel-tools-3.10.0-327.28.3.el7.x86_64 2/7
更新します : python-perf-3.10.0-327.28.3.el7.x86_64 3/7
インストール中 : kernel-3.10.0-327.28.3.el7.x86_64 4/7
整理中 : kernel-tools-3.10.0-327.28.2.el7.x86_64 5/7
整理中 : kernel-tools-libs-3.10.0-327.28.2.el7.x86_64 6/7
整理中 : python-perf-3.10.0-327.28.2.el7.x86_64 7/7
検証中 : kernel-tools-3.10.0-327.28.3.el7.x86_64 1/7
検証中 : kernel-3.10.0-327.28.3.el7.x86_64 2/7
検証中 : python-perf-3.10.0-327.28.3.el7.x86_64 3/7
検証中 : kernel-tools-libs-3.10.0-327.28.3.el7.x86_64 4/7
検証中 : python-perf-3.10.0-327.28.2.el7.x86_64 5/7
検証中 : kernel-tools-libs-3.10.0-327.28.2.el7.x86_64 6/7
検証中 : kernel-tools-3.10.0-327.28.2.el7.x86_64 7/7
インストール:
kernel.x86_64 0:3.10.0-327.28.3.el7
更新:
kernel-tools.x86_64 0:3.10.0-327.28.3.el7 kernel-tools-libs.x86_64 0:3.10.0-327.28.3.el7
python-perf.x86_64 0:3.10.0-327.28.3.el7
完了しました!