Rails:安装rubyracer时出错

时间:2013-04-05 06:45:47

标签: ruby-on-rails-3 rubygems therubyracer

我在linode服务器上运行'bundle install'。但是无法安装rubyracer的原因。 Bundle安装输出是:

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'

3 个答案:

答案 0 :(得分:3)

我在ubuntu上遇到了同样的问题:

经过一些实验,我能够确认命令行上的“gem install therubyracer --pre”工作正常,但告诉捆绑商使用--pre选项不起作用:

bundle config build.therubyracer --pre

我不知道是不是因为gem是通过依赖而不是Gemfile中明确的'gem'行引入的。即使经过广泛的谷歌搜索,我也无法解决这个问题,但由于0.11似乎只有几个小时,我决定尝试通过添加以下内容来恢复到之前的0.10版本:

gem 'therubyracer', '=0.10'

在使用依赖它的宝石之前。这个强制捆绑器选择了早期版本,它像魅力一样安装。希望很快someone will fix 0.11

在github上查看therubyracer的问题之后,这似乎与两个不同的问题有关 - 一个关闭:https://github.com/cowboyd/therubyracer/issues/213建议首先(或显式)安装libv8 gem,这会导致不同的错误:{ {3}}并且尚未关闭 - 对于64位目标,libv8 gem似乎有一个损坏的二进制文件。唯一的解决方案似乎是从源代码构建libv8,或者像我一样做,并恢复到0.11beta8或更早(有​​人说0.11beta8有效)。在那之前,我建议你在Github上观看215问题并等待修复。

感谢。

答案 1 :(得分:0)

问题是由于多个libv8版本。

解决方案:卸载libv8并运行ur bundle。 命令:

1)gem卸载libv8 2)捆绑

答案 2 :(得分:0)

这也是由于与libv8的一些冲突而发生的,尽管你可以只为rubyracer分配一个版本并将其安装:

更改gemfile中的以下内容:

gem'therubyracer','〜&gt; 0.12.1'

并进行捆绑安装

如果这也无法解决问题,则libv8存在一些问题。手动安装以下宝石:

gem install rmagick -v'2.13.2' 如果没有安装,请通过brew安装imagemagick gem install libv8 -v 3.11.8.17 - --with-system-v8 更改gemfile中的以下内容: gem'therubyracer','〜&gt; 0.12.1'

然后进行捆绑安装。