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

元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

Windows 8.1 で berkshelf 3.0 をインストール(dep-selector-libgecode問題)

結論としては

  1. DevKitのMSYS(msys.bat)を使う
  2. DevKitのMSYStarを置き換える

  • 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

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

WindowsでのBerkshelfのインストール成功

原因は、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

原因

mingwgccが認識されていません。

対策

単にパスだけ通しても、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

スクリーンショット 2014-05-30 11.37.57.png

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

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

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

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

$ 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