モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

vagrant上のCentOSでyumがエラーになった件

vagrant上でCentOS6.6を動かしていたのですが、ある時からyum installやupdateをしようとすると

[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
他のミラーを試します。

というエラーが出るようになりました。


これは /etc/yum.repos.d/CentOS-Base.repo の mirrorlist や baseurl で

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

のように設定されているところで $releasever が「6.6」になっているとうまくいかず、404になるURLを確認してみると

http://mirror.centos.org/centos/6.6/readme

This directory (and version of CentOS) is deprecated. For normal users,
you should use /6/ and not /6.6/ in your path. Please see this FAQ

のように書かれており「6.6」ではなく「6」でアクセスするようにせよ、と書いてあります。
これはググるとよくこの問題が出てきます。


なので、baseurlのコメントを外してmirrorlistのほうをコメントにしてやり、$releaseverを「6」に置換えてやることでとりあえず yum が動くようにはなりました。


なのですが、他のCentOS6環境だと何も設定変更しなくても yum update で6.7に上がっているのに、なぜここだけは6.6から自動的に上がらないのだろう?と不思議でした。


下記エントリでvagrant上でCentOS6動かしていると、IPv6が効いていると全く同じエラーが出る、と書かれていたためIPv6を切ってみたのですがやはりダメ。

vagrant環境下で [Errno 14] PYCURL ERROR 6 – “Couldn’t resolve host エラー | blog@human


そこで $releasever の値を「6」にするのはどこでやっているのかを調べると、

Red Hat Customer Portal

/etc/centos-release (/etc/redhat-release はここへのシンボリックリンク)のバージョンだ、ということだったので、ここのテキストを直接編集したのですが、自分の環境では変化がありませんでした。

ただ、通常はこれで変わってくれるようで、/etc/yum.repos.d/CentOS-Base.repo の中身を修正して回るより良いと思います。


さらにもう少し調べると

/etc/yum/vars/releasever ファイルでリリースバージョンを固定する | blog.hansode.org

というのがありました。

そこで /etc/yum/vars/releasever を確認すると、「6.6」となっていました。
デフォルトだとこのファイル自体が存在していません


実は vagrant の CentOS6.6 イメージを hansode さんが作られたもの(hansode/centos-6.6-x86_64)を使っていたので、もろにこの設定がされていたものを意識せずに使っていたため、この状況にハマってしまっていたのでした。


というわけで /etc/yum/vars/releasever を削除することで、普通に yum が使えるようになりました。