5

Linode サーバーで「バンドル インストール」を実行しています。しかし、rubyracer が原因でインストールできません。バンドル インストールの出力は次のとおりです。

Installing therubyracer (0.11.0) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb 
checking for main() in -lpthread... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-pthreadlib
--without-pthreadlib
--enable-debug
--disable-debug
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/build.rb:50:in `build_with_rubygem_libv8': undefined local variable or method `libv8_include_flags' for main:Object (NameError)
from extconf.rb:20:in `<main>'


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out

An error occurred while installing therubyracer (0.11.0), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0'` succeeds before bundling.

実際には gem ruby​​racer がインストールされていますが、バージョンは 0.11.4 です。なぜこのバージョンを採用せず、0.11.0 しか受け入れないのか、私にはわかりません。

0.11.0のインストール方法も。エラー「gem install therubyracer -v '0.11.0'」で指定されたコマンドを実行すると、実行に失敗して次のようになります。

Building native extensions.  This could take a while...
ERROR:  Error installing therubyracer:
ERROR: Failed to build gem native extension.

    /usr/local/bin/ruby extconf.rb
checking for main() in -lpthread... yes
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-pthreadlib
--without-pthreadlib
--enable-debug
--disable-debug
/usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/build.rb:50:in    `build_with_rubygem_libv8': undefined local variable or method `libv8_include_flags' for    main:Object (NameError)
from extconf.rb:20:in `<main>'


Gem files will remain installed in /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-    0.11.0 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out

ここで誰か助けてくれませんか?スタックとgitで多くを検索しましたが、指定されたソリューションはどれも機能していません。

私の宝石ファイル:

source 'https://rubygems.org'

gem 'rails', '3.2.12'
gem "paperclip"
gem 'mysql2'
gem "devise"
group :assets do
 gem 'sass-rails',   '~> 3.2.3'
 gem 'coffee-rails', '~> 3.2.1'

gem 'uglifier', '>= 1.0.3'
end


gem 'jquery-rails'
gem 'libv8', '3.11.8.4', :platform => :ruby
gem 'therubyracer', '0.11.0', :platforms => :ruby
gem 'rails_admin'
gem 'unicorn'
gem 'delayed_job_active_record'
gem 'daemons'
4

3 に答える 3

3

ubuntuでも同じ問題に直面していました:

いくつかの実験の後gem install therubyracer --pre、コマンド ラインで ' ' が正常に機能することを確認できましたが、オプションを使用するようバンドラーに指示--preしても機能しませんでした。

bundle config build.therubyracer --pre

Gemfile の明示的な「gem」行ではなく、依存関係を介して gem が取り込まれたためかどうかはわかりません。0.10大規模なグーグル検索を行ってもこれを修正できませんでしたが、0.11 がリリースされてまだ数時間しか経っていないように見えるため、以下を追加して以前のバージョンに 戻すことにしました。

gem 'therubyracer', '=0.10'

それに依存する宝石の使用前。これにより、バンドラーは以前のバージョンを選択することを余儀なくされ、魅力的にインストールされました。うまくいけばsomeone will fix 0.11、すぐに。

github で therubyracer の問題を調べたところ、これは 2 つの異なる問題に関連しているようです別のエラーが発生します: https://github.com/cowboyd/therubyracer/issues/215で、まだ閉じられていません - libv8 gem には、64 ビット ターゲット用の破損したバイナリが含まれているようです。唯一の解決策は、ソースから libv8 をビルドするか、私が行ったように 0.11beta8 以前に戻すことです (誰かが0.11beta8動作すると言っています)。それまでは、Github で 215 号を見て修正を待つことをお勧めします。

ありがとう。

于 2013-04-05T07:28:25.647 に答える
0

この問題は、複数の libv8 バージョンが原因です。

解決策: libv8 をアンインストールして、ur bundle を実行します。コマンド:

1) gem アンインストール libv8 2) バンドル

于 2014-05-02T06:47:43.620 に答える