我无法在Yosemite 10.10上安装therubyracer gem .
这是日志:
11:53 $ gem install libv8 -v '3.16.14.3' -- --with-system-v8
Building native extensions with: '--with-system-v8'
This could take a while...
Successfully installed libv8-3.16.14.3
Parsing documentation for libv8-3.16.14.3
Installing ri documentation for libv8-3.16.14.3
Done installing documentation for libv8 after 0 seconds
1 gem installed
02:05 $ gem install therubyracer -v '0.12.1' -- --with-system-v8
Building native extensions with: '--with-system-v8'
This could take a while...
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
/usr/local/var/rbenv/versions/2.1.2/bin/ruby extconf.rb --with-system-v8
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** 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/var/rbenv/versions/2.1.2/bin/ruby
--with-pthreadlib
--without-pthreadlib
--with-objclib
--without-objclib
--enable-debug
--disable-debug
--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:in `configure': You have chosen to use the version of V8 found on your system (Libv8::Location::System::NotFoundError)
and *not* the one that is bundle with the libv8 rubygem. However,
it could not be located. please make sure you have a version of
v8 that is compatible with 3.16.14.3 installed. You may
need to special --with-v8-dir options if it is in a non-standard
location
thanks,
The Mgmt
from /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/libv8-3.16.14.3/lib/libv8.rb:7:in `configure_makefile'
from extconf.rb:32:in `'
extconf failed, exit code 1
Gem files will remain installed in /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/therubyracer-0.12.1 for inspection.
Results logged to /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.out
17 回答
更新了2018年的答案 .
我在High Sierra,Homebrew 1.6.1
这对我有用吗
对于他的original answer来说,归功于@coding-addicted .
rm Gemfile.lock
之后我能够继续使用红宝石赛车事先:我通过
brew install v8
安装了v8,然后做了gem install libv8 -v '3.16.14.3' -- --with-system-v8
我正在跑10.10优胜美地
这对我的Yosemite和Ruby 2.1.5(Ruby to RVM)非常有用 .
之前它给了我libv8 gem版本3.16.14.3的错误
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
看起来这已经在上游修复了 . 对我和@aurels以及@Mike Causer和@Juanda有用的是:
这次没有一个答案对我有用 . 我也用过这个:
看过rubyracer Github问题 .
希望它可以帮助别人 .
面向可能遇到我的问题的任何人:我最终在RVM中卸载我的ruby版本,然后重新安装它 . 这似乎使用最新版本的xcode工具中的正确依赖来编译ruby .
我在优胜美地遇到了同样的问题 . 我的解决方案与上面的解决方案类似 .
使用
gem uninstall libv8
删除可能安装的任何内容 .在您的Gemfile中保留therubyracer,但删除对libv8的任何显式引用 .
运行
bundle install
.然后libv8作为依赖项安装得很好 .
这是10.10的唯一方式(红宝石2.1.2)
或者尝试
gem install libv8 -v 'XX.XX.XX' -- --with-system-v8
添加gem的版本:)这是因为与libv8的一些冲突,尽管你可以只为rubyracer分配一个版本,它将被安装:
在gemfile中更改以下内容:
gem'therubyracer','〜> 0.12.1'
并进行捆绑安装
经过几个小时的尝试,只需升级ruby工作:
然后将以下内容添加到gem文件中:
然后只是捆绑你的项目宝石
这是10.10的唯一方式(红宝石2.1.2)
基于以下评论,对我有用的是什么
https://github.com/cowboyd/therubyracer/issues/304#issuecomment-62046085
是删除Gemfile.lock然后运行bundle install
只有这在我的Yosemite,Ruby 2.1.2中对我有用:
我做了以下
现在安装
therubyracer 0.12.1
,安装依赖libv8 (3.16.14.7 x86_64-darwin-14)
安装没有错误 .我使用
ruby 2.1.5
这样做,我通过以下方式安装:我在跑完
brew upgrade ruby-builds
之后做了什么 .安装
ruby 2.1.5
后,我也跑了得到
rubygems-update 2.4.5
也许这对某些人有用但我在安装therubyracer时遇到问题(因为libv8存在问题)解决方案是卸载我安装的所有libv8 . 安装therubyracer
我希望这可以帮助别人 .
他们已在最新版本的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还在寻找另一个我认为的?还在调查 .
这个解决方案适用于Jakub Troszok上面的解决方案,只需稍加改动