WindowsでVagrant+Git+MinGw-Getを共存


Windows XP SP3上でVagrant+Git+MinGw-Getを共存させてみました。
手順の覚え書きを下記に記載しておきます。

※私の環境では動作しましたが、この操作が推奨とは思ってないので、ご利用は自己責任で^^; おかしなところがあったらご指摘いただければ幸いです。  
また、日本語表示などの細かな設定は今回省略してあります。また時間があるときにでも書き足したいなと思っています。

## 環境変数の設定
- お好みの場所をホームディレクトリにするために、Windowsシステムのプロパティから環境変数「HOME」を設定する。(未指定の場合`%USERPROFILE%`がホームディレクトリになる)

## 7-Zipのインストール
- mingw-getやRubyの7zファイルを展開するときに必要になる解凍ソフトをインストールしておく。
- DL URL：http://sevenzip.sourceforge.jp/

## VirtualBoxのインストール
- インストーラを実行する。(例では`D:\opt\VirtualBox`へインストール)
- ホームディレクトリとなる場所に「.bash_profile」を用意し、下記を追記する。(VBoxManage.exeのパスを通す)

```sh:.bash_profile
export PATH=/d/opt/VirtualBox:$PATH
```

- 使用ファイル：<del>VirtualBox-4.3.0-89960-Win.exe</del>
VirtualBox-4.2.16-86992-Win.exe
- DL URL：https://www.virtualbox.org/wiki/Downloads

※私の環境ではVirtualBox Host-Only Ethernet Adapterがずっと「ネットワークアドレスの取得中」となってしまいましたが、ネットワークのプロパティでVirtualBox Bridged Networking Driverのチェックを入れると、とりあえず動きました。  

※当初、4.3を使いましたが、どうもvagrantが対応していないようで`config.vm.network :private_network`を有効にするとエラーになってしまいました。そこで4.2.16をインストールする事でこの問題は回避できましたので追記します。(2013/10/30)

## Vagrantのインストール
- インストーラを実行する。(例では`D:\opt\Vagrant`へインストール)
- インストール後、Vagrantのminttyを試す。
 - 「ファイル名を指定して実行」を起動。
 - `D:\opt\Vagrant\embedded\bin\mintty.exe /bin/bash --login -i`で実行。(お好みでConsole2やckw等でもOK)
 - ターミナル画面で下記コマンドを実行していく。(boxファイルをDLするので少し時間がかかる)  

```sh:コマンドライン
$ mkdir ~/vagrant_test
$ cd ~/vagrant_test
$ vagrant box add centos6.4-i386 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-i386-v20130731.box
$ vagrant init centos6.4-i386
$ vagrant up
		: (起動するまで待つ)
$ vagrant halt
		: (終了するまで待つ)
```

- インストーラ実行により`D:\opt\Vagrant\bin`のPATHが通る。
- 使用ファイル：Vagrant_1.3.5.msi
- DL URL：http://downloads.vagrantup.com/

## PortableGitを展開
- minttyはexitしておく。
- `D:\opt\Vagrant\embedded`ディレクトリに上書き展開する。
- 展開後、Vagrantのコンソールからgitを試してみる

```sh:コマンドライン
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
	(usernameとemalは各自設定にあわせること)
$ cd ~/vagrant_test
$ git init
$ touch testfile
$ git add .
$ git status
		: (testfileがnew fileとして表示されるはず)
$ git commit -m'First commit'
		: (コメントをつけてコミットする)
$ git log
		: (先のコミットログが確認できる)
```

- そしてgitを入れるとsshが使えるようになるのでVagrantでも試してみる。

```sh:コマンドライン
$ ssh -v
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
		: (sshのバージョン確認)
$ cd ~/vagrant_test
$ vagrant up
		: (起動するまで待つ)
$ vagrant ssh
		: (仮想環境にssh接続できるか確認)
$ exit
		: (仮想環境から抜ける)
$ vagrant halt
		: (終了するまで待つ)
```

- 使用ファイル：PortableGit-1.8.4-preview20130916.7z
- DL URL：https://code.google.com/p/msysgit/downloads/list

## mingw-getを展開
- `D:\opt\Vagrant\embedded\mingw`ディレクトリの下に上書き展開する。
- `/mingw/var/lib/mingw-get/data/defaults.xml`の「subsystem="MSYS"」行を修正する。

```xml:defaults.xml
<profile project="MinGW" application="mingw-get">
		: (省略)
  <system-map id="default">
		：
    <sysroot subsystem="mingw32" path="%R" />
    <sysroot subsystem="MSYS" path="%R/.." />
  </system-map>
</profile>
```

- これにより、mingw-getを使ってパッケージの操作ができるようになっています。試してみましょう。

```sh:コマンドライン
$ mingw-get update
		:  (パッケージカタログが更新される)
$ mingw-get list | grep Package:
		: (パッケージの一覧を表示する)
```

- 使用ファイル：mingw-get-0.6.2-mingw32-beta-20131004-1-bin.zip
- DL URL：http://sourceforge.net/projects/mingw/files/Installer/mingw-get/mingw-get-0.6.2-beta-20131004-1/

## VagrantのRubyをアップデート(ちょっと待ち)
今回はとりあえずVagrantのRubyをそのまま使ってみようと思います。

## 参考にさせていただいたサイト
先達の知恵は偉大ですね。この場をかりてお礼申し上げます。  

http://qiita.com/ogomr/items/98a33f47f6ba050adac4
http://hyokonia.tumblr.com/post/18425275737/mingw-msys
http://blog.vitamin11.org/2013/06/windowsvagrant_12.html