我无法在 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
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
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) 上对我有用的唯一方法
gem 'libv8', '3.16.14.3'
(或您刚刚手动安装的 libv8 的确切版本),然后运行 bundle update libv8。然后应该安装 therubyracer。
这次没有一个答案对我有用。我也用这个:
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 问题。
希望它可以帮助别人。
gem install therubyracer -- --with-v8-dir=$(brew --prefix v8-315)
更适合我。我 mac 中的目录实际上是 /usr/local/opt/v8@3.15
也许它对某人有用,但我在安装 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
我希望这可以帮助别人。
gem uninstall libv8 -a -x
。如果您使用 ruby 版本管理器(例如 rbenv
等),那么这仅适用于您当前的 ruby 版本(以防不明显)。
似乎这已在上游修复。对我、@aurels、@Mike Causer 和 @Juanda 有用的是:
bundle update libv8
这在我的 Yosemite 和 Ruby 2.1.5(通过 RVM 的 Ruby)上非常适合我
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.
只有这对我的优胜美地 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.3p484
和 rubyracer 0.12.3
安装 rubyracer 的问题
在 rm Gemfile.lock
之后我能够继续使用 ruby racer
事先:我通过 brew install v8
安装了 v8,然后做了 gem install libv8 -v '3.16.14.3' -- --with-system-v8
我正在运行 10.10 Yosemite
他们在最新版本的 libv8 中更正了这个问题。请参阅:https://github.com/cowboyd/libv8/issues/123
您应该从 github 存储库安装,在 rails 我向我的 gemfile 添加了一行,如下所示gem "libv8", git: "git://github.com/cowboyd/libv8.git", submodules: true
编辑:
这显然只能解决部分问题。我安装了新版本的libv8,但现在rubyracer 还在寻找我认为的另一个?仍在调查中。
我在优胜美地也遇到了同样的问题。我的解决方案与上面出现的类似。
使用 gem uninstall libv8
删除可能已安装的任何内容。
将 therubyracer 保留在 Gemfile 中,但删除对 libv8 的任何显式引用。
运行 bundle install
。
然后 libv8 作为依赖项安装得很好。
更新了 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-addicted 的 original answer。
经过数小时尝试简单地升级 ruby 工作:
brew install ruby
然后将以下内容添加到 gem 文件中:
gem 'libv8'
gem 'therubyracer'
提醒任何可能遇到我的问题的人:我最终在 RVM 中卸载了我的 ruby 版本,然后重新安装它。这似乎在最新版本的 xcode 工具中使用了正确的依赖关系来编译 ruby。
rvm list
rvm uninstall ruby-x.x.x
rvm install ruby-x.x.x
我做了以下
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
这也是由于与 libv8 的一些冲突而发生的,尽管您可以为 rubyracer 分配一个版本并且它将被安装:
在 gemfile 中更改以下内容:
gem 'therubyracer', '~> 0.12.1'
并进行捆绑安装
根据以下评论,什么对我有用,
https://github.com/cowboyd/therubyracer/issues/304#issuecomment-62046085
是删除 Gemfile.lock 然后运行 bundle install
这个解决方案对我有用
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
使用 homebrew 的 v8 目录作为 --with-v8-dir=/usr/local/Cellar/v8@3.15/3.15.11.18_1
,而不是 /usr/local/opt/v8-315
,对我有用,编码上瘾的答案。
这在 brew install 命令 brew install v8-315
的 Summary
中可见。
gem 'therubyracer', '0.12.1'
(添加版本)。然后删除 Gemfile.lock 并执行bundle install
。它工作正常。