yum installしてもいつまでも古いRPMパッケージが参照されてしまうときはyum cleanコマンドを実行する


この記事でわかること

  • varnishをインストールしようとしたとき、yum installで詰んだ話
  • 原因はCentOS6にCentOS7のパッケージを追加しようとしてた
  • その後RPMパッケージを変更したがyum installはずっと変更前のCentOS6系のリポジトリを参照しててエラー
  • yum cleanコマンドでキャッシュを削除したら反映された

事の経緯

isucon2の過去問を解いてる際に、Varnishインストールを行っていたのですが、
下記の手順でVarnishをインストールしようとしても、エラーが出てしまい、インストールされませんでした。

$ rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpm
$ yum install varnish

エラー: パッケージ: varnish-libs-4.1.3-1.el7.x86_64 (varnish-4.1)
             要求: libc.so.6(GLIBC_2.14)(64bit)
・・・以下略

原因を調査していると、上記のコマンドで、CentOS6の環境にCentOS7系のリポジトリhttps://repo.varnish-cache.org/redhat/varnish-4.1.el7.rpmを追加していたことがわかりました。
きちんと環境に合わせたものを追加しなければ、そりゃエラーもでますね…

そこで、下記のコマンドで追加したリポジトリを削除し、CentOS6系のリポジトリを追加し、再度インストールを行いました。

$ rpm --nosignature -i https://repo.varnish-cache.org/redhat/varnish-4.1.el6.rp
$ yum install varnish

……しかし、それでもまだ
エラー: パッケージ: varnish-libs-4.1.3-1.el7.x86_64 (varnish-4.1)
というエラーが表示されてしまいます。しかもel6に修正したはずなのに、el7になってます
これはいったいどういうことなのでしょう。

yum cleanでキャッシュを削除して解決!

さらにさらに調査したところ、どうやらyumによるインストールやアップデートで利用したRPMパッケージやデータのキャッシュが残っているのが原因のようでした。
下記のコマンドでyumのキャッシュをクリアして、再度インストールを行うことで、無事にCentOS6系のVarnishがインストールされました!

$ yum clean all
$ yum install varnish

症状がキャッシュが残ってて反映されてないやつに似てたので、yum キャッシュのようなキーワードで検索したのがよかったです…。
まさかyumにキャッシュがあるとは思いませんでした

参考
https://www.varnish-cache.org/releases/install_redhat.html
http://easyramble.com/yum-clean-and-update.html