個人的に Vagrant をいろいろ試していて、そろそろまとめようと思ったら既にVagrant - naoyaのはてなダイアリーで d:id:naoya さんがいい感じにまとめられていて先を越されてしまった。
非常に便利な Vagrant ですが、私の Macbook にてなぜか vagrant sandbox off
や vagrant sandbox rollback
でエラーが出てしまったので、その対処を記載しておきます。
環境
- MacOS X 10.8.2
- VirtualBox 4.2.6
- rbenv 0.4.0
- ruby 1.9.3p327
- Vagrant 1.0.6
- sahara 0.0.13
エラー内容
vagrant sandbox off
時
$ vagrant sandbox off
[default] - switching sandbox off
0%...
Progress state: NS_ERROR_FAILURE
VBoxManage: error: Snapshot operation failed
VBoxManage: error: Failed to perform an online medium merge (VERR_INVALID_PARAMETER)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component Console, interface IConsole
VBoxManage: error: Context: "int handleSnapshot(HandlerArg*)" at line 431 of file VBoxManageSnapshot.cpp
vagrant sandbox rollback
時
$ vagrant sandbox rollback
[default] - powering off machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[default] - roll back machine
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
[default] - starting the machine again
VBoxManage: error: The saved state file '/Users/nnasaki/VirtualBox VMs/second-kitchen_1360688166/Snapshots/2013-02-12T17-22-05-034073000Z.sav' is invalid (VERR_FILE_NOT_FOUND). Delete the saved state and try again
VBoxManage: error: Details: code VBOX_E_FILE_ERROR (0x80bb0004), component Console, interface IConsole
対処
github から sahara ソースを持ってきて、issues#17 のパッチを取り込む。
sahara をビルドするために gem をいろいろインストールすると依存関係が壊れたり意図しない gem がアップデートすると後々面倒なので、rbenv-gemset を使うようにする。
brew update
brew install rbenv-gemset
git clone でソースを持ってきて、echo sahara-build > .rbenv-gemsets
すると sahara 専用の gemset というかビルド環境が用意できる。
git clone https://github.com/jedi4ever/sahara.git
cd sahara
echo sahara-build > .rbenv-gemsets
gem install bundle
bundle install
rbenv rehash
sandbox off failed: Issue #17 のパッチを取り込む。パッチはヘッダを消してissues-17.patchというファイルを作成する。
patch --dry-run -p0 < issues-17.patch
patch -p0 < issues-17.patch
rake build
ビルドが成功したら gemset を消して後始末。消さないと~/.rbenv
にゴミが残ったままになります。
rm .rbenv-gemsets
rbenv gemset delete 1.9.3-p327 sahara-build
sahara をインストール
cd pkg
gem install ./sahara-0.0.13.gem
rbenv rehash
sandbox が動くことを確認
vagrant sandbox status
vagrant sandbox on
vagrant sandbox off
sahara のビルド方法は 20120721 chefの下準備 #devlove の p90 を参考にしました。
私の環境だけの問題かもしれませんが、メモに残しておきます。