Windows(RubyInstaller) +  berkshelf 3.0 をインストール（dep-selector-libgecode問題）

WindowsでRuby2系は嵌まると評判なので、今回は1.9.3を使いました。

結論としては

 1. DevKitのMSYS（msys.bat）を使う
 2. DevKitのMSYSのtarを置き換える

で入りました。

---

 - Windows 8.1 64bit
 - ruby 1.9.3 (RubyInstaller `1.9.3p545 (2014-02-24) [i386-mingw32]` +  RubyInstaller Development Kit)
 - Bundler
 - berkshelf 3.1.2
   - dep-selector-libgecode 1.0.1

Windows（MinGW）上でberkshelf 3をインストールしようとするとdep-selector-libgecodeでエラー発生し進めません。

[WindowsでのBerkshelfのインストール成功](http://www.5cho-me.com/archives/171465)

> 原因は、Berkshelfのバージョンでした。大抵Vagrant+Chefで簡単に仮想サーバーが設定できるよ、と書いているサイトは、
> 
> gem install berkshelf
> 
> とインストールしろ、と書いていますが、Berkselfの最新版をインストールしようとます。これだと途中で Failed to build gecode libraryでビルドで失敗します（この関係するdep-selector-libgecodeというのが何であるのはさっぱりわかりません）。
> 
> 以前インストールに成功したときのBerkselfのバージョンのメモが残っていました。2.0.14で成功していました。現在の最新版は、rubygems.orgのサイトを見ると3.0.1でしたので、2の系列の最新版は、2.0.15ですので次のようにBerkselfのバージョンを指定してインストールします。

でも、2系と3系だといろいろ違うので、支障が出ます。2で妥協できません。

しばらく嵌まっていたものの、無事インストールできたのでメモっておきます。

---

## configure: error: C++ compiler cannot create executables

### 原因

mingwのgccが認識されていません。

### 対策

単にパスだけ通しても、`make`でコケました。

DevKitの`msys.bat`からbashを起動して、その中でインストールします。

minttyを使う場合はショートカットを作成してリンク先を

    C:\DevKit\msys.bat -mintty

のようにします。

## make: *** [installlib] Error 2

これだけだと、ビルド自体は成功するようですが、最後の`make install`でエラーになるようです。

          0 [main] tar 6088 open_stackdumpfile: Dumping stack trace to tar.exe.stackdump
          0 [main] tar 2824 open_stackdumpfile: Dumping stack trace to tar.exe.stackdump
    make[1]: *** [doinstallheaders] Error 5
    make[1]: Leaving directory `/c/Users/uzuki05/Documents/libgecodetest/vendor/bundle/ruby/1.9.1/gems/dep-selector-libgecode-1.0.1/ext/libgecode3/vendor/gecode-3.7.3'
    make: *** [installlib] Error 2
    extconf.rb:94:in `block in run': Failed to build gecode library. (GecodeBuild::BuildError)
            from extconf.rb:93:in `chdir'
            from extconf.rb:93:in `run'
            from extconf.rb:100:in `<main>'

試してみます。

    cd /c/Users/uzuki05/Documents/libgecodetest/vendor/bundle/ruby/1.9.1/gems/dep-selector-libgecode-1.0.1/ext/libgecode3/vendor/gecode-3.7.3
    make install

<a href="http://mt.takeyu-web.com/blog.takeyu-web.com/ruby/2014/05/30/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202014-05-30%2011.37.57.png"><img alt="スクリーンショット 2014-05-30 11.37.57.png" src="http://mt.takeyu-web.com/blog.takeyu-web.com/ruby/assets_c/2014/05/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202014-05-30%2011.37.57-thumb-200xauto-1976.png" width="200" height="97" class="mt-image-none" style="" /></a>

### 原因

どうもDevKitに含まれるtarが壊れているのか、そこで止まってしまうようです。

### 対策

[Tar for Windows](http://gnuwin32.sourceforge.net/packages/gtar.htm)から[Binaries(Zip):tar-1.13-1-bin.zip](http://gnuwin32.sourceforge.net/downlinks/tar-bin-zip.php)と[[Dependencies(Zip):tar-1.13-1-dep.zip](http://gnuwin32.sourceforge.net/downlinks/tar-dep-zip.php)をダウンロードし、展開して得られるファイルをDevKitのディレクトリ（`C:\DevKit`）に上書きします。

参考 https://github.com/berkshelf/solve/issues/31#issuecomment-40660305

上書き後バージョンを確認します。

    $ tar --version
    tar (GNU tar) 1.13
    
    Copyright (C) 1988, 92,93,94,95,96,97,98, 1999 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    Written by John Gilmore and Jay Fenlason.


## 結果

無事インストールできました。

    uzuki05@Z21 /c/Users/uzuki05/Documents/libgecodetest
    $ bundle install --path=vendor/bundle
    Don't run Bundler as root. Bundler can ask for sudo if it is needed, and installing your bundle as root will break this application for all non-root users on this machine.
    Fetching gem metadata from https://rubygems.org/..
    Resolving dependencies...
    Installing dep-selector-libgecode 1.0.1
    Using bundler 1.6.2
    Your bundle is complete!
    It was installed into ./vendor/bundle