如何在10.10优胜美地上安装therubyracer gem?


97

我无法在优胜美地10.10上安装therubyracer gem。

这是日志:

11:53 $ gem安装libv8 -v'3.16.14.3'---with-system-v8


使用以下命令构建本机扩展:'--with-system-v8'
这可能需要一段时间...
成功安装libv8-3.16.14.3
解析libv8-3.16.14.3的文档
安装libv8-3.16.14.3的ri文档
0秒后完成libv8的安装文档
已安装1个宝石


02:05 $ gem安装therubyracer -v'0.12.1'---with-system-v8


使用以下命令构建本机扩展:'--with-system-v8'
这可能需要一段时间...
错误:安装therubyracer时出错:
    错误:无法生成gem本机扩展。

    /usr/local/var/rbenv/versions/2.1.2/bin/ruby extconf.rb --with-system-v8
检查-lpthread中的main()...是
检查-lobjc中的main()...是
正在检查v8.h ...否
*** extconf.rb失败***
由于某些原因(可能缺少必要)而无法创建Makefile
库和/或标题。检查mkmf.log文件以获取更多详细信息。你可以
需要配置选项。

提供的配置选项:
    --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
    --with-make-prog
    --srcdir =。
    --curdir
    --ruby = / usr / local / var / rbenv / versions / 2.1.2 / bin / ruby
    --with-pthreadlib
    --without-pthreadlib
    --with-objclib
    --with-objclib
    -启用调试
    -禁用调试
    --with-v8-dir
    --without-v8-dir
    --with-v8-include
    --without-v8-include = $ {v8-dir} / include
    --with-v8-lib
    --without-v8-lib = $ {v8-dir} / lib
/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:在`configure'中:您有选择使用系统上找到的V8版本(Libv8 :: Location :: System :: NotFoundError)
*不是*与libv8 ruby​​gem捆绑在一起的一个。然而,
找不到它。请确保您使用的是
与3.16.14.3兼容的v8。你可以
如果它是非标准的,则需要特殊的--with-v8-dir选项
位置

谢谢,
经理

    来自/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/lib/libv8.rb:7:在`configure_makefile'中
    来自extconf.rb:32:in'

extconf失败,退出代码1

宝石文件将保留安装在/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/therubyracer-0.12.1中以进行检查。
结果记录到/usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-14/2.1.0-static/therubyracer-0.12.1/gem_make。出

您也遇到优胜美地的问题:D
Dalorzo 2014年

我知道,我喜欢成为冒险家:-P
Nicolas Blanco

1
我也遇到了麻烦,我也尝试进行brew install v8,但没有成功
繁殖

@sandelius检查我的答案
毫米

Answers:


68
git clone https://github.com/cowboyd/libv8.git
cd libv8
bundle install
bundle exec rake clean build binary
gem install pkg/libv8-3.16.14.3-x86_64-darwin-12.gem #note that libv8 version may change, so tab through files in pkg/, also remember to use the one with version specified

然后捆绑您的项目宝石

这是它在10.10(ruby 2.1.2)上为我工作的唯一方式


2
谢谢,但是这是libv8,我说的是therubyracer gem。
尼古拉斯·布兰科2014年

2
这是您需要避免therubyracer问题的方法-mmln 2014
48

2
我不在乎我是否违反规则。我感激不尽。您为我节省了一个巨大的项目截止日期。
AKWF 2014年

1
谢谢,它对我有用,仅适用于像我这样的复制/粘贴人员,我们现在在gem install pkg / libv8-3.16.14.7-x86_64-darwin-14.gem
Christophe Dufour

2
还值得一提的是,如果您使用的是Gemfile,但仍然无法安装therubyracer,则可能是因为Gemfile.lock中已经添加了另一个版本的libv8。只需添加gem 'libv8', '3.16.14.3'(或您手动安装的libv8的确切版本),然后运行捆绑更新libv8。然后应该安装therubyracer。
乔恩·凯恩斯

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

这是它在10.10(ruby 2.1.2)上为我工作的唯一方式

或者尝试gem install libv8 -v 'XX.XX.XX' -- --with-system-v8添加gem的版本:)

Mac OS Catalina的更新:

brew tap homebrew/versions
brew install v8@3.15
brew link --force v8@3.15
gem install libv8 -v 'XX.XX.XX' -- --with-system-v8
gem install therubyracer

3
是的,这是没有任何怪异的帮助。即使您可能只是遇到libv8错误,也要这样做!谢谢。
pjammer 2014年

2
是的 这是正确的方法。特别是如果您使用最新的10.10命令行工具重建了红宝石。
Pankaj Tyagi 2014年

3
为我使用OS X Yosemite中的Ruby 2.1.3。
莎拉·弗赛尔斯

4
除此之外,如果您正在使用捆绑软件并且拥有Gemfile,则可能需要将其调整为刚安装的最新版本。例如,我必须(在OS X Yosemite上)执行以下操作:(gem 'therubyracer', '0.12.1'添加了版本)。然后删除Gemfile.lock并执行bundle install。它工作正常。
paneer_tikka

2
El Capitan也对我有用。我认为这要简单得多,应该是公认的答案。
rcd

42

这次没有答案对我有用。我也用这个:

brew tap homebrew/versions
brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8-315

bundle install

在rubyracer Github问题上可以看到。

希望它可以帮助别人。


谢谢你 使用从属宝石的现代版本,其他方法都无法在El Capitan上使用。(此时,thrubyracer严重地落后于libv8。)
Matt Mitchell

遗憾的是,您是对的……每当我更改红宝石版本时,此错误都会使我发疯。
编码上瘾的

1
tap自家酿造/版本现已被弃用,因此不再有效。
mattp

1
实际上,gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)对我来说效果更好。我的Mac中的目录实际上是/usr/local/opt/v8@3.15
Junji Zhi

26

也许对某人有用,但是我在安装therubyracer时遇到了问题(由于libv8的问题),解决方案是卸载我已经安装的所有libv8。安装therubyracer

$ gem uninstall libv8
$ gem install therubyracer -v '0.12.0'
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem ( 57%)
Fetching: libv8-3.16.14.7-x86_64-darwin-14.gem (100%)
Successfully installed libv8-3.16.14.7-x86_64-darwin-14
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.0
2 gems installed

我希望这可以帮助别人。


这似乎对我有用。但是,我想指出,卸载所有版本的libv8 gem的最佳方法是:gem uninstall libv8 -a -x。如果您使用ruby版本管理器(例如rbenv,等等),那么这仅适用于您当前的ruby版本(以防万一)。
xentek

solution此解决方案对我有用-El Capitan 10.11.6,Ruby-ruby 1.9.3p448(2013-06-27修订版41675)
sameera207

13

似乎此问题已在上游修复。对我,@ aurels,@ Mike Causer和@Juanda有用的是:

bundle update libv8

7

这对我的优胜美地和Ruby 2.1.5(通过RVM的Ruby)非常有效

gem install libv8 -v '3.16.14.3' -- --with-system-v8

先前它给我Gem::Ext::BuildError: ERROR: Failed to build gem native extension.libv8 gem版本3.16.14.3的错误


7

在我的优胜美地Ruby 2.1.2中,只有这对我有用:

gem install libv8 -v '3.16.14.3' -- --with-system-v8
brew link --overwrite v8-315 --force
gem install therubyracer -v '0.12.2' -- --with-system-v8

只有解决了以下问题,才能为ruby 1.9.3p484rubyracer 0.12.3
Michael Klishevich于

6

之后我可以继续红宝石赛车 rm Gemfile.lock

事先:我通过安装了v8 brew install v8,然后执行了gem install libv8 -v '3.16.14.3' -- --with-system-v8

我正在运行10.10优胜美地


4

他们已在最新版本的libv8中更正了此问题。参见:https : //github.com/cowboyd/libv8/issues/123

您应该从github repo安装,在rails中,我像这样在我的gemfile中添加了一行 gem "libv8", git: "git://github.com/cowboyd/libv8.git", submodules: true

编辑:

显然这只能解决一些问题。我安装了新版本的libv8,但是现在rubyracer仍在寻找我认为的另一个版本?仍在调查。


3

我在优胜美地有同样的问题。我的解决方案与上面显示的类似。

使用gem uninstall libv8删除任何可能被安装。

将therubyracer保留在您的Gemfile中,但删除任何对libv8的明确引用。

运行bundle install

然后安装libv8作为依赖项就可以了。


这是我的问题。我有多个版本的libv8互相争斗。清除它们并让捆绑器解决依赖关系是正确的做法。
DavidMann10k,2015年

2

更新了2018年的答案。

我在High Sierra上,在Homebrew 1.6.1上

brew install v8-315

gem install libv8 -v '3.16.14.13' -- --with-system-v8
gem install therubyracer -- --with-v8-dir=/usr/local/opt/v8@3.15/

是什么对我有用。

致谢@ coding-addict以获得他的原始答案


1

经过数小时的尝试,简单地升级了ruby就可以了:

brew install ruby 

然后将以下内容添加到gem文件:

gem 'libv8'  
gem 'therubyracer' 

1

谨记任何可能遇到我问题的人:我最终在RVM中卸载了我的ruby版本,然后重新安装了它。这似乎使用了最新版本的xcode工具中的正确依赖关系来编译ruby。

rvm list
rvm uninstall ruby-x.x.x
rvm install ruby-x.x.x

0

我做了以下

gem install therubyracer

现在安装therubyracer 0.12.1,将安装依赖项libv8 (3.16.14.7 x86_64-darwin-14)安装没有错误。

我这样做是ruby 2.1.5通过以下方式安装的:

CC=/usr/bin/gcc rbenv install 2.1.5

我跑步后做的 brew upgrade ruby-builds

安装后ruby 2.1.5,我也跑了

gem upgrade --system

要得到 rubygems-update 2.4.5


0

发生这种情况的原因还在于与libv8的某些冲突,尽管您可以仅将一个版本分配给rubyracer并将其安装:

在gemfile中更改以下内容:

宝石'therubyracer','〜> 0.12.1'

并捆绑安装



0

该解决方案在遵循Jakub Troszok的上述解决方案的情况下对我起作用,只是做了很小的改动

gem uninstall libv8
gem install therubyracer -v '0.12.1'
    Fetching: libv8-3.16.14.19-x86_64-darwin-18.gem (100%)
    Successfully installed libv8-3.16.14.19-x86_64-darwin-18
    Building native extensions.  This could take a while...
    Successfully installed therubyracer-0.12.1
    Parsing documentation for libv8-3.16.14.19-x86_64-darwin-18
    Installing ri documentation for libv8-3.16.14.19-x86_64-darwin-18
    Parsing documentation for therubyracer-0.12.1
    Installing ri documentation for therubyracer-0.12.1
    Done installing documentation for libv8, therubyracer after 0 seconds
    2 gems installed
gem install libv8 -v '3.16.14.17' -- --with-system-v8  (if the libv8 version required for your project is different from the one installed by rubyracer)
bundle install

请指出次要更改是什么,并尝试解释它为何起作用。由于您要回答的问题已有4年之久,因此您还应该在适用的版本上添加一些详细信息(您的答案可能与那时无关)。
米歇尔

0

在编码上瘾者的答案时,将homebrew的v8目录用于--with-v8-dir=/usr/local/Cellar/v8@3.15/3.15.11.18_1而不是/usr/local/opt/v8-315,对我有用。

Summary在brew install命令的中可见brew install v8-315

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.