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

Windows8.1でVagrantを使う → 「vagrant up」で"gsub!: invalid byte sequence in Windows-31J (ArgumentError)"エラー → 解決までをまとめる

経緯...

  1. WindwosでUnix系動かしたいなー
  2. Vagrantがあると聞いて
  3. Chocolatey」最高!!

    参照:Windowsでコマンド打つなら絶対インストールするべきパッケージ管理システム「Chocolatey」 - ポジろし

  4. cinst vagrant, cinst virtualbox
  5. 俺のWindowsがこんなに快適なわけない♪(・∀・)ニヤニヤ
  6. box取ってきて~、vagrant initして~、vagrant up!

_人人人人人人人人人人人人_

> 突然の ArgumentError <

 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

encodingの設定が怪しい?

同じようなエラーに遭遇した記事を発見する。(僥倖っ!)

vagrant up での provision に失敗したときの解決法 - つばろぐ

解決法

一番安全な方法としては、シェルスクリプトに日本語を含めないことではないでしょうか。

エラーを吐いたスクリプトを調査する。

C:\HashiCorp\Vagrant\embedded\gems\gems\i18n-0.6.9\lib\i18n\interpolate/ruby.rb:21:in `gsub!': invalid byte sequence in Windows-31J (ArgumentError)

(・・・・以下、エラーが続く)

ruby.rb...だと?

パスからするに、Vagrantがインストールしてくれたrubyスクリプトですよね?

つまり・・・日本語が無い!!(...が、ダメッ!)

Vagrantfileをいじればおk?

ドンピシャ!な記事!(ほのみえる!)

vagrant upでgsub!: invalid byte sequence in Windows-31J (ArgumentError) - DQNEO起業日記

対処法

Vagrantfileの中で"Encoding.default_external = 'UTF-8'"と記述したら解消されました。

(オープン!)

...ぼくの環境では解決されませんでした。orz

まだだ、まだ終わらんよ!

OSの「ユーザーアカウント名」を疑う

Windows8.1に設定しているユーザーアカウント名は日本語になっていました。

海外製のアプリ、ツールを使うときによく遭遇するのが、「ファイルパスに日本語が含まれているとエラーを起こす」です。

ですので、Vagrantが扱うパスに日本語が含まれないようにしました。

「.vagrant.d」の場所をCドライブの直下へ移動

以下を参考にしました。$VAGRANT_HOMEを設定すれば、Vagrantで使用されるホームパスを変更することができます。初期値は空。

Vagrant の .vagrant.d の場所を変更する - suer のブログ

環境変数の設定はPowerShellから。

Windowsの環境変数をPowerShellで書き変える - Qiita

PowerShell環境変数を変える

[Environment]::SetEnvironmentVariable('VAGRANT_HOME', 'C:\', 'User')

PowerShell環境変数を確認する

$env:vagrant_home ←大文字小文字区別しない

変更後は、PowerShellを再起動してください。

解決!!

再起動後、以下のコマンドを再実行すると正常に終了!

vagrant box add precise32 http://files.vagrantup.com/precise32.box

vagrant init precise32

vagrant up

まとめると

Windowsでユーザー名が日本語の状態(C:\Users\伊藤カイジ)で、Vagrantをインストールしてしまうとvagrant upでコケます。

解決策は、

  1. ローマ字アカウントで再セットアップ
  2. $VAGRANT_HOMEを日本語を含まない場所に変更し、.vagrant.dをそのディレクトリに移動させる

です。

参考サイト

ChocolateyでWindowsにVirtualBox, Vagrant, Rubyをインストールしてみた | 時の回廊

パッケージ管理ツールChocolateyは本当に便利ですね。

Vagrant入門 (全13回) - プログラミングならドットインストール

Vagrantを使って簡単に仮想マシンを立ち上げていく方法について学んでいきます。

Vagrantとは何か?から使い方まで。懇切丁寧に解説ドットインストール。@taguchi++。

突然の死ジェネレータ

突然のXXXが多い日も安心。