- 更新日: 2013年7月11日
- Ruby
bundle install ができなくてはまったのでやった対策
Mac に入れてある Ruby(rvm管理下)で、ちょっとしたツールを作ろうとしたのだけど、An error occurred while installing unf_ext (0.0.6), and Bundler cannot continue. というメッセージが出て、bundle install ができなかったので備忘録。
bundle install が途中で止まる
まずはツールを作るため、bundle init で Gemfile を生成しました。
1 2 3 |
$ bundle init |
続いて、Gemfile を編集。
1 2 3 |
$ vi Gemfile |
gems をインストールするパスを指定して bundle install。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Using Platform (0.4.0) Installing unf_ext (0.0.6) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /**********/.rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb checking for main() in -lstdc++... yes checking for ruby/encoding.h... yes creating Makefile make compiling unf.cc g++: error: unrecognized command line option '-Wshorten-64-to-32' make: *** [unf.o] Error 1 Gem files will remain installed in /**********/vendor/bundle/ruby/2.0.0/gems/unf_ext-0.0.6 for inspection. Results logged to /**********/bundle/ruby/2.0.0/gems/unf_ext-0.0.6/ext/unf_ext/gem_make.out An error occurred while installing unf_ext (0.0.6), and Bundler cannot continue. Make sure that `gem install unf_ext -v '0.0.6'` succeeds before bundling. |
g++: error… とあるので、ビルド中に何かエラーぽい。ここで止まって bundle install が進みませんでした。一応ログ確認します。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ tail /**********/vendor/bundle/ruby/2.0.0/gems/unf_ext-0.0.6/ext/unf_ext/gem_make.out /**********/.rvm/rubies/ruby-2.0.0-p0/bin/ruby extconf.rb checking for main() in -lstdc++... yes checking for ruby/encoding.h... yes creating Makefile make compiling unf.cc g++: error: unrecognized command line option '-Wshorten-64-to-32' make: *** [unf.o] Error 1 |
gcc を変更してたのが原因?
g++ のエラーっぽいのでコンパイラ周り。よく分からないけど、1つ思い当たりました。そう言えば、rvm で ruby1.8.7 をインストールする時に、gcc, g++ を homebrew でインストールした gcc4.9 に変更したのでした。
rvm で ruby 1.8.7 インストール時にエラーになったので gcc 4.9 を homebrew で入れた | EasyRamble
上のページに gcc を変更した記録がありました、2013年5月8日。これが原因かもしれないので、元々入っていた(Xcodeインストール時に入れた)Apple の llvm な gcc に戻します。
rvm で ruby 1.8.7 をインストールするために、以下のようにして、gcc4.9 が優先するように設定していた。
1 2 3 4 |
$ sudo ln -s /usr/local/bin/gcc-4.9 /usr/local/bin/gcc $ sudo ln -s /usr/local/bin/g++-4.9 /usr/local/bin/g++ |
なので一旦、gcc4.9 へのシンボリックリンク(/usr/local/bin/gcc, /usr/local/bin/g++)を削除して試してみます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo rm /usr/local/bin/gcc $ sudo rm /usr/local/bin/g++ $ which gcc /usr/bin/gcc $ gcc --version i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00) Copyright (C) 2007 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. |
これで、Xcode インストール時に入れた、i686-apple-darwin11-llvm-gcc-4.2 に戻りました。
その後、一応 rvm で入れていた ruby 1.9.3 と 2.0.0 をインストールし直しました。
改めて bundle install
もう一回、bundle install
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
$ cd livedoor-reader-rss $ bundle install --path vendor/bundle $ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Using Platform (0.4.0) Installing unf_ext (0.0.6) Installing unf (0.1.1) Installing domain_name (0.5.12) Installing http-cookie (1.0.1) Installing mime-types (1.23) Installing net-http-digest_auth (1.3) Installing net-http-persistent (2.8) Installing mini_portile (0.5.0) Installing nokogiri (1.6.0) Installing ntlm-http (0.1.1) Installing webrobots (0.1.1) Installing mechanize (2.7.1) Installing net-netrc (0.2.2) Using bundler (1.3.5) Your bundle is complete! It was installed into ./vendor/bundle |
はまったけど最終的にOK、無事に bundle install が上手くできました。rubygems の C Extension は、ruby をインストールしたのと同じ gcc でないとビルドできないとかそういうことなのか?よく分かりません。
- Ruby の関連記事
- Gemの作り方(Ruby Gem)
- ローカル開発中のgemをGemfileに書いてインストール
- 熊本地震の余震が夜に多いのは本当か?Rubyプログラムで検証してみた
- El Capitanでgemのnative extensionビルド失敗に対応
- Rubyで親クラスから子クラスの定数を参照
- MacabをRubyで使う
- rbenv/ruby-buildでRuby最新バージョンをインストール
- Rubyでクラスインスタンス変数にインスタンスメソッドからアクセス
- 距離1kmあたりの緯度・経度の度数を計算(日本・北緯35度)
- Google Maps Geocoding APIで住所から緯度・経度を取得するRubyコード
Leave Your Message!