关于ruby:如何在10.10 Yosemite上安装therubyracer gem?

How to install therubyracer gem on 10.10 Yosemite?

我无法在Yosemite 10.10上安装therubyracer gem。

这是日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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


1
2
3
4
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的版本:)


1
2
3
4
5
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)


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

1
2
3
4
5
6
7
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

看到红宝石Github问题。

希望它可以帮助别人。


也许它会对某人有用但我在安装therubyracer时遇到问题(因为libv8存在问题)解决方案是卸载我安装的所有libv8。安装therubyracer

1
2
3
4
5
6
7
8
$ 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

我希望这可以帮助别人。


看起来这已经在上游修复了。对我和@aurels以及@Mike Causer和@Juanda有用的是:

1
bundle update libv8

这对我的Yosemite和Ruby 2.1.5(Ruby通过RVM)非常有用。

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

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


我能够在rm Gemfile.lock之后继续使用红宝石赛车

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

我正在跑10.10优胜美地


只有这在我的Yosemite,Ruby 2.1.2中适合我:

1
2
3
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

他们已在最新版本的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还在寻找另一个我认为的?还在调查它。


我在优胜美地遇到了同样的问题。我的解决方案与上面的解决方案类似。

使用gem uninstall libv8删除可能安装的任何内容。

在您的Gemfile中保留therubyracer,但删除对libv8的任何显式引用。

运行bundle install

然后libv8作为依赖项安装得很好。


更新了2018年的答案。

我在High Sierra,Homebrew 1.6.1

1
2
3
4
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-addicted。


经过几个小时的尝试,只需升级ruby工作:

1
brew install ruby

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

1
2
gem 'libv8'  
gem 'therubyracer'

这是因为与libv8的一些冲突,尽管你可以只为rubyracer分配一个版本,它将被安装:

更改gemfile中的以下内容:

gem'therubyracer','?> 0.12.1'

并进行捆绑安装


这个解决方案对我有效,遵循Jakub Troszok的解决方案,只需稍作改动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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


根据以下评论,对我有用的是什么

https://github.com/cowboyd/therubyracer/issues/304#issuecomment-62046085

是删除Gemfile.lock然后运行bundle install


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

1
2
3
rvm list
rvm uninstall ruby-x.x.x
rvm install ruby-x.x.x


我做了以下

1
gem install therubyracer

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

我使用ruby 2.1.5执行此操作,我通过以下方式安装:

1
CC=/usr/bin/gcc rbenv install 2.1.5

我在运行brew upgrade ruby-builds后做了什么。

安装ruby 2.1.5后,我也跑了

1
gem upgrade --system

获得rubygems-update 2.4.5