Skip to content

Instantly share code, notes, and snippets.

@knzm
Created February 16, 2018 11:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save knzm/0a7b46e8ebdfd5b9bd409d6b8b341c97 to your computer and use it in GitHub Desktop.
Save knzm/0a7b46e8ebdfd5b9bd409d6b8b341c97 to your computer and use it in GitHub Desktop.
本日の yak shaving

久しぶりに vagrant を使うので、 box を update しようとしたら変なエラーが出た。

$ vagrant box outdated --global
* 'ubuntu/xenial64': Error loading metadata: The requested URL returned error: 404 Not Found
* 'ubuntu/trusty64': Error loading metadata: The requested URL returned error: 404 Not Found
* 'centos/6': Error loading metadata: The requested URL returned error: 404 Not Found
* 'centos/7': Error loading metadata: The requested URL returned error: 404 Not Found

vagrant のバージョンが古いことが原因かもしれないと思って、 vagrant をアップデートしてみることにした。

ちなみにアップデート前はこんなバージョン:

$ vagrant --version
Vagrant 1.8.6

最新の 2.0.2 を入れたところプラグインがロードできなくてエラーが出た。プラグインのリストすら出せない。 vagrant plugin コマンドで修復を試みるもどれもうまく行かず。

$ vagrant plugin update
$ vagrant plugin repair
$ vagrant plugin expunge --reinstall

結局、心当たりのあるプラグインを個別に再インストールしたらエラーが出なくなった。

しかし、ここまでやっても元々のエラーは変わらず。

どの URL で 404 になっているか知りたい。これには vagrant を --debug オプション付きで実行すれば良さそう。 その結果、以下のような URL にアクセスしようとしてエラーになっていることが分かった。

https://atlas.hashicorp.com/centos/7

どうやら box をホスティングしているドメインが atlas.hashicorp.com から vagrantcloud.com に変わったらしい。 hashicorp/vagrant#9442

box のダウンロード先の URL は ~/.vagrant.d/boxes/<BOX_NAME>/metadata_url に書いてあるみたいなので、このファイルを書き換えてみた。 すると今度はまた別のエラーが出た。

$ vagrant box outdated --global
* 'ubuntu/xenial64' for 'virtualbox': Error loading metadata: Illegal characters found in URL
* 'ubuntu/trusty64' for 'virtualbox': Error loading metadata: Illegal characters found in URL
* 'centos/7' for 'virtualbox': Error loading metadata: Illegal characters found in URL
* 'centos/6' for 'virtualbox': Error loading metadata: Illegal characters found in URL

別におかしな文字は入ってなさそうなんだけど、原因が分からないので再度 --debug オプション付きで実行してみた。 最後に改行文字が入っていることが問題らしい。

vi で最後の改行を付けない方法を調べて以下のページを見つけた。 vim-jp/issues#152

ファイルを開いた後に、

:set binary noeol
:wq

これで最初のエラーが出なくなって、無事 vagrant box update できるようになった。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment