読者です 読者をやめる 読者になる 読者になる

圧倒亭グランパのブログ

圧倒的おじいちゃんを目指して

vagrant-berkshelfのエラー:Failed to load the "vagrant-berkshelf" plugin. View logs for more details.

どうも。@at_grandpa です。

今回はvagrant-berkshelfを触っていて遭遇したエラーについてです。

 

症状

vagrant status を実行すると以下のエラーが出ました。

$ vagrant status
Failed to load the "vagrant-berkshelf" plugin. View logs for more details.
...

logの出力を見てみると、以下のようにあるファイルのloadが失敗しているようです。

$ VAGRANT_LOG=debug vagrant status
 INFO global: Vagrant version: 1.3.5
...
INFO environment: Loading plugin from JSON: vagrant-berkshelf
ERROR root: Failed to load plugin: vagrant-berkshelf
ERROR root:  -- Error: #<LoadError: dlopen(/home/path/.vagrant.d/gems/gems/nio4r-0.5.0/lib/nio4r_ext.bundle, 9): no suitable image found.  Did find:
    /home/path/.vagrant.d/gems/gems/nio4r-0.5.0/lib/nio4r_ext.bundle: mach-o, but wrong architecture - /home/path/.vagrant.d/gems/gems/nio4r-0.5.0/lib/nio4r_ext.bundle>
ERROR root:  -- Backtrace:
ERROR root: /Applications/Vagrant/embedded/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/Applications/Vagrant/embedded/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
...

mach-o, but wrong architectureということから、アーキテクチャ系(x86_64とかi386とか)の不一致が原因のエラーらしいです。vagrant-berkshelf関連の記事はなかなか見当たりませんでしたが、Google検索するといろいろと情報が載っています。

Googlle検索:"mach-o, but wrong architecture"

インストールしたファイルをあれこれいじるのはあまりしたくないので、他になにかないかと考えていました。  

解決

症状が起きる前までは、なんのエラーも無くvagrant-berkshelfを使えていました。

一体なにが変わったのかとあれこれ模索しているうちに週末が終わってしまったのですが、ふと思い立ったことがありました。

  そういえば再インストールしたんだった・・・  

vagrant-berkshelfのバージョンを確認してみると 1.3.4 。もしやと思い、バージョンを下げてみました。

$ vagrant plugin uninstall vagrant-berkshelf
Uninstalling the 'vagrant-berkshelf' plugin...

$ vagrant plugin install vagrant-berkshelf --plugin-version 1.2.0
Installing the 'vagrant-berkshelf --version '1.2.0'' plugin. This can take a few minutes...
Installed the plugin 'vagrant-berkshelf (1.2.0)'!

すると!バージョンを1.2.0まで下げたらエラーは出なくなりました!

OSのバージョンは Mac OSX 10.7.5 です。OSXのどのバージョンでvagrant-berkshelfのエラーが出なくなるのかはまだ未検証ですが、とりあえずこれで先に進めそうです。

同じ現象の方は是非、vagrant-berkshelfのバージョンを下げてみてください。