任意のパッケージを特定のyumリポジトリからアップデートしないように外す方法

CentOSを使っていて、いろいろな yum リポジトリを登録すると、同じパッケージが重なって収録されていることがよくある。
複数のサーバーで同じようにセットアップしているつもりでも、リポジトリ違いのパッケージ(よくあるのが収録されているバージョンが微妙に違うとか)を使っていることが原因で、システムの挙動が変わってしまうことがあるので注意が必要だ。
#厄介なのは問題が発生した時に、この原因に気が付きにくいこと。
そのため、センシティブなパッケージはきちんとコントロールすることが重要だ。

設定方法は簡単。
yum のリポジトリ情報は、/etc/yum.repos.d 以下に「~.repo」というファイル単位でリポジトリが管理されているから、対象のリポジトリのファイルに
exclude= xxxx yyyy
を追記する
#xxx yyyyはパッケージ名。複数指定、ワイルドカードも使える
例) EPEL(epel.repo)のredisは使わない。
[epel]
name=Extra Packages for Enterprise Linux 6 – $basearch
failovermethod=priority
enabled=1
gpgcheck=0
exclude=redis
なおサーバー全体で除外したい場合は、 /etc/yum.conf に記載する。
いろいろと使い道を調べると、
  • システムの都合上、カーネルをアップデートしたくない(出来ない)
  • アップデート用のファイルがコンフリクトを起こしてアップデートできない
などの局面でも役立ちそうだ