bundle install / update:libv8(therubyracer)安装失败(带有本机扩展)

我最近想更新我的gem包但是遇到了libv8的安装问题(对therubyracer的要求):

 使用本机扩展安装libv8(3.3.10.3)/usr/local/rvm/rubies/ruby-1.9.3-head/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:在块中救援在build_extensions'中:错误:失败
 构建gem原生扩展。  (gem::安装:: ExtensionBuildError)

         /usr/local/rvm/rubies/ruby-1.9.3-head/bin/ruby extconf.rb 
检查Python ... *** extconf.rb失败***
由于某些原因,可能无法创建Makefile
必要的库和/或标题。 检查mkmf.log文件以获取更多信息
细节。 您可能需要配置选项。

我在therubyracer github网站上找到了问题报告 ,它建议卸载并重新安装libv8,但这不适用于我的Ubuntu 11.04机器。 任何想法 – 还是我坚持旧版本一段时间?

尝试一下:

 gem 'therubyracer' gem 'libv8', '3.16.14.3' 

应该有所帮助

使用新的捆绑包也是更好的: gem install bundler --pre

我在老式的Ubuntu 10.04(x64)上遇到了类似的问题

在我更新项目后,Gemfile拥有了这些gem

  gem 'libv8', '~> 3.11.8' gem "therubyracer", '>= 0.11.0beta1', :require => 'v8' 

但当我运行’捆绑安装’时,我收到了一个错误

 Installing therubyracer (0.11.0beta1) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /home/sseletskyy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb checking for main() in -lpthread... yes creating Makefile make compiling array.cc compiling script.cc compiling object.cc compiling constants.cc compiling signature.cc compiling value.cc compiling locker.cc compiling init.cc compiling heap.cc compiling date.cc compiling message.cc compiling accessor.cc compiling context.cc compiling exception.cc compiling backref.cc compiling trycatch.cc compiling gc.cc compiling handles.cc compiling stack.cc compiling template.cc compiling function.cc compiling primitive.cc compiling rr.cc compiling v8.cc compiling invocation.cc compiling string.cc compiling external.cc compiling constraints.cc linking shared-object v8/init.so /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/libv8-3.11.8.2-x86_64-linux/vendor/v8/out/x64.release/obj.target/tools/gyp/libv8_base.a: could not read symbols: No such file or directory collect2: ld returned 1 exit status make: *** [init.so] Error 1 Gem files will remain installed in /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1 for inspection. Results logged to /home/sseletskyy/.rvm/gems/ruby-1.9.3-p194/gems/therubyracer-0.11.0beta1/ext/v8/gem_make.out An error occured while installing therubyracer (0.11.0beta1), and Bundler cannot continue. Make sure that `gem install therubyracer -v '0.11.0beta1'` succeeds before bundling. 

这是一个有助于我快速解决该障碍的步骤列表

  1. 卸载所有版本的gem’libv8’和’therubyracer’

    >gem卸载therubyracer

    > gem卸载libv8

  2. 手动安装therubyracer

    >gem安装therubyracer

    获取:libv8-3.3.10.4-x86_64-linux.gem(100%)获取:therubyracer-0.10.1.gem(100%)构建本机扩展。 这可能需要一段时间……已成功安装libv8-3.3.10.4-x86_64-linux安装成功安装了therubyracer-0.10.1 2个gem安装libv8-3.3.10.4-x86_64-linux的ri文档…为therubyracer安装ri文档-0.10.1 …为libv8-3.3.10.4-x86_64-linux安装RDoc文档…为therubyracer-0.10.1安装RDoc文档…

  3. 检查已安装gem的版本

    >gem清单| grep libv

    libv8(3.3.10.4 x86_64-linux)

    >gem清单| grep therubyracer

    therubyracer(0.10.1)

  4. 在Gemfile中设置这些版本并运行

    >捆绑安装

  5. 摘要。 我明白,在我的情况下,我没有使用最新的版本,它可能是兼容性的坏。 但至少我可以继续发展。

Ubuntu 11.04

 gem "therubyracer", '0.11.1' gem 'libv8' 
  1. 卸载therubyracer和libv8 gem

  2. 更新bundler gem版本

  3. 安装lib8-dev包

    sudo apt-get install libv8-dev

  4. 然后运行它

    sudo apt-get install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion imagemagick graphicsmagick libmagickcore-dev libmagickwand-dev

  5. 现在手动安装therubyracer

    gem安装therubyracer

  6. 它将为您安装therubyracer和libv8。

  7. 现在运行bundle install

以上所有步骤解决了我的问题:)

我最近遇到了同样的问题。 以下是RoR.org“Rails入门”指南中的一些有用信息:

将CoffeeScript编译为JavaScript需要一个JavaScript运行时,缺少运行时会给你一个execjs错误。 通常,Mac OS X和Windows都安装了JavaScript运行时。 Rails在一个注释行中为新应用添加了therubyracer gem到Gemfile,如果需要,你可以取消注释。 therubyrhino是JRuby用户的推荐运行时,默认情况下添加到JRuby下生成的应用程序中的Gemfile。 您可以在ExecJS上调查所有支持的运行时。

根据我在其他地方读到的内容,似乎Windows支持therubyracer gem并不存在于’3.3.10.4’版本中(可能存在于更新的版本中,但在那时还没有读过)。 我已经安装了python 2.7并让它进行编译,但是在环境设置过程中你仍会遇到错误。

所以归结为这个。 在这里查看therubyracer文档。 ‘therubyracer’提供这些function(:

  • 在Ruby中评估Javascript
  • 将您的Ruby对象嵌入到Javascript世界中
  • 操纵JavaScript对象并从Ruby调用JavaScript函数
  • API兼容The Ruby Rhino(适用于JRuby: http : //github.com/cowboyd/therubyrhino )

如果您绝对需要这些function,那么您应切换到* nix并删除Windows以用于开发/生产环境。 否则你可以做我做的事情,并选择不安装’therubyracer’或’libv8’(从我的Gemfile中删除)。 我并没有严重依赖JavaScript我正在遇到这个问题的网站,所以我只是忽略了两个gem而且一切看起来都很顺利(到目前为止)。

希望这可以帮助有需要的人!

Ubuntu 12.04

 gem 'libv8', '3.11.8.3' gem 'therubyracer', '0.11.0beta5' 

指定上面的版本解决了我的therubyracer问题。

同样如上所述,我使用了最新的捆绑包:

 gem install bundler --pre 

一定要在你的Gemfile引用ruby

 gem 'therubyracer', :platform => :ruby 

然后运行bundle update

使用这些终端命令在Ubuntu 16.04上为我修复了它

 sudo apt-get install g++ sudo apt-get install build-essential