`创业板安装therubyracer`无法在Mac OS X狮子(`gem install ther

2019-06-25 05:57发布

我希望在得到一些帮助gem install therubyracer工作。 以下是错误:

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

        /Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for main() in -lobjc... 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
    --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=/Users/david/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
    --with-objclib
    --without-objclib
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)

这里是我的错误之前跑了一些值得注意的步骤。 他们工作得很好:

$ gem install libv8
$ brew install v8

我的环境是:

  • Mac OS X的狮子10.7.4
  • 红宝石1.9.3p194(2012-04-20的修订35410)[x86_64的-darwin11.4.0](通过RVM)
  • V8版本24年3月9日(通过自制)

Answer 1:

这为我工作:

$ gem uninstall libv8
$ gem install therubyracer

(非常感谢http://www.ruby-forum.com/topic/4306127 )



Answer 2:

gem uninstall libv8
brew install v8
gem install therubyracer


Answer 3:

但是, 为什么会出现这种情况,你问? 为什么不卸载libv8并重新安装therubyracer解决这一问题?

答案是错误消息的底部(从原稿后)。 忽略有关的东西

probably lack of necessary libraries and/or headers

这是谁写的是错误信息的不正确的假设。 在底部,你看到了什么Ruby有说些什么:

undefined method `include_path' for Libv8:Module

就我而言,我试图安装therubyracer-0.9.8bundle install ,并由于某种原因,有人试图用我的副本libv8-3.11.8.13 ,已被安装在某些时候,可能是因为的依赖一些其他的宝石。

我不知道为什么有人试图使用较新的版本,因为therubyracer.gemspec包含s.add_dependency "libv8", "~> 3.3.10" 。 而我Gemfile.lock说,使用libv8 (3.3.10.2) 但很可惜,这确实是发生了什么事。

而这是真的, Libv8:Module 没有方法include_pathlibv8-3.11.8.13 ,但它在 libv8-3.3.10.2

所以这就是为什么卸载所有版本的libv8 ,然后重新安装therubyracer作品。 因为所有的版本libv8 没有方法include_path被完全去除,而libv8 确实有该方法include当您重新安装的路径重新安装therubyracer



Answer 4:

考虑到如果没有上述工作对我来说100%,我想我会发布什么了(作为Rails项目的一部分):

gem uninstall libv8
bundle update therubyracer

这确保我得到了最新therubyracer ,也是一个较新版本libV8 ,而且似乎解决我打了多个问题,从失踪libv8.a文件,未定义的方法。



Answer 5:

最后我用therubyracer 0.11.0beta5作为解决方案。

使用therubyracer(0.11.0beta5)

添加以下上的Gemfile

gem 'therubyracer', '~> 0.11.0beta5'
group :libv8 do
  gem 'libv8', "~> 3.11.8"
end

然后bundle install

MAC OSX 10.8颇富狮子



Answer 6:

如果你需要0.11.3和它的失败给这适用于Mac OS X 10.9一枪...

gem uninstall libv8
brew install v8
gem install libv8 -- --with-system-v8
gem install therubyracer -v '0.11.3' -- --with-system-v8

见这个问题的更多细节。

你可能并不需要-- --with-system-v8上的最后一行,但我没有,因为我看到它开始这样做只是为了安全起见Fetching: libv8-3.11.8.17-x86_64-darwin-13.gem (1%)当我跑的命令...

总之,它为我工作时,所有其他的事情都没有。



Answer 7:

对于任何试图自己的Gemfile与升级的时候在Mac OSX 10.8山狮遇到此问题gem 'therubyracer', '0.11.0' ,只是升级系统libv8宝石为我工作(无需任何其他宝石的卸载):

$ gem update libv8
$ bundle install

编辑

如果您使用的特拉维斯- CI (或位于其他服务器上的其他CI工具,我认为),你将需要显式添加libv8宝石到您的Gemfile还有:

的Gemfile

gem 'libv8', '3.11.8.3'

然后bundle install如常。 不过请注意libv8可以利用的时间来安装一个显著量,我已经注意到,它可能最终会被要去了事业特拉维斯CI的超时限制 ,导致您的构建失败。 您可以减轻这种被轻微不包括在你的构建开发环境的宝石:

.travis.yml

# ...
bundler_args: --binstubs=./bundler_stubs --without development

更新

是的,几乎所有我的特拉维斯建立超时,由于这个原因失败。 如果有人知道的方式来解决这个问题(我希望“降级therubyracer ”是不得已而为之),请发表评论!

更新2

这可能不适用于所有应用程序的工作,但似乎我的Rails 3.2.9应用程序并不真正需要therubyracerlibv8毕竟。 从我的Gemfile消除这些宝石后,我证实,我的规格过去了,再次被推到特拉维斯并成功建成。 所以,我想摆脱那些宝石(如果你不知道你真正需要它们)至少是值得一试。

更新3

感谢保罗安尼斯雷确认,如果你在Mac OS X 10.8山狮,你不需要therubyracer宝石,因为在所有的操作系统已经预装了苹果JavaScriptCore的,其自己的JavaScript亚军捆绑在一起。 在原来的答案的时候,我是在Snow Leopard上,因此需要它。



Answer 8:

对我来说,去除Gemfile.lock的文件并运行bundle install工作它的魔力。



Answer 9:

OSX 10.8.2,红宝石1.9.3p125

为我工作以上都不是......我厌倦了试图找到我的环境权的宝石,所以我只是软链接到G ++目标这件事是丢失:

sudo ln -s `which g++` /usr/bin/g++-4.2

不是有益的远程部署,但把工作我的工作站上完成的。



Answer 10:

我有一个类似的问题,但也有人抱怨没有找到G ++ - 4.2。 我有安装的XCode的命令行工具,但它一直在寻找/usr/bin/g++-4.2,我有G ++(这是指向LLVM-G ++符号链接- 4.2)。 无论如何,我刚刚创建符号链接到G ++,并试图捆绑重新安装...它的工作!

$ cd /usr/bin

$ sudo ln -s g++ g++-4.2



Answer 11:

有同样的错误,这个工作对我来说:

  1. 从控制台: gem uninstall libv8

  2. 在你的Gemfile,添加以下内容:

     gem 'therubyracer', :platforms => :ruby, :require => 'v8' gem 'libv8', '~> 3.11.8' # Update version number as needed 
  3. 从控制台: bundle install

如果你在升级therubyracer宝石的中间,你可能需要运行bundle update therubyracer后为好。 (考虑指定一个版本号)

这是在Mac 10.6(雪豹)。



文章来源: `gem install therubyracer` fails on Mac OS X Lion
标签: ruby rubygems v8