[Linux] yumで特定パッケージのバージョンアップを阻止する

ローカルでの検証用にVirtualBox上でLinuxを動かしているのですが、迂闊にkernelのバージョンを上げてしまうとGustOS用のドライバ(Guest Addition)の再インストールが高確率で発生します。それは良いのですが、問題は再インストールが一発で上手くいった試しがなく、大抵ドハマリして長時間作業が止まる羽目になるんです。

というわけでyum updateの対象にならないよう設定を行います。

設定

以下のように/etc/yum.confに1行書き足せばOK。

$ sudo vi /etc/yum.conf
exclude=kernel*

excludeの横にyumでアップデート対象にしてほしくないパッケージ名を指定するだけです。アスタリスク(*)はワイルドカードを意味し、この場合だとkernel-develなどkernelで始まるものをすべて対象とします。

他に追加したい物があれば、スペースで区切って横に追記してやります。

$ sudo vi /etc/yum.conf
exclude=kernel* php*

確認してみる

実際に確認してみます。yumのオプションに-yは絶対につけないでくださいね。

設定前

kernelのupdateが来てますね。最終的にnを入力しキャンセルします。

$ sudo yum update
(中略)
===========================================================================================================
 Package                      アーキテクチャー  バージョン                        リポジトリー        容量
===========================================================================================================
インストール中:
 kernel                       x86_64            3.10.0-1062.1.2.el7               updates             50 M
 kernel-devel                 x86_64            3.10.0-1062.1.2.el7               updates             18 M
更新します:
 kernel-headers               x86_64            3.10.0-1062.1.2.el7               updates            8.7 M
 kernel-tools                 x86_64            3.10.0-1062.1.2.el7               updates            7.8 M
 kernel-tools-libs            x86_64            3.10.0-1062.1.2.el7               updates            7.7 M

トランザクションの要約
===========================================================================================================
インストール  2 パッケージ
更新          3 パッケージ

総ダウンロード容量: 92 M
Is this ok [y/d/N]: 

設定後

/etc/yum.confに設定を追加すると、以下のようにkernelで始まるモジュールをすべてスルーしてくれるようになりました。

$ sudo yum update
(中略)
No packages marked for update

もちろん外部からアクセスされるような端末のソフトウェアは原則として常に最新に保つ必要がありますが、ローカルでの検証など何か事情がある場合にお役立てくださいませ。