タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

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