我无法在 Arch Linux x64 中安装 therubyracer
Posted
技术标签:
【中文标题】我无法在 Arch Linux x64 中安装 therubyracer【英文标题】:I can't install therubyracer in Arch Linux x64 【发布时间】:2012-12-09 13:27:45 【问题描述】:当我尝试安装 rubyracer 时,我收到以下错误:
Installing therubyracer (0.11.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/carlos/.rbenv/versions/1.9.3-p327/bin/ruby extconf.rb
checking for main() in -lpthread... yes
checking for v8.h... yes
creating Makefile
make
compiling script.cc
compiling v8.cc
compiling backref.cc
compiling value.cc
compiling accessor.cc
compiling trycatch.cc
compiling primitive.cc
compiling external.cc
compiling date.cc
compiling exception.cc
compiling init.cc
compiling template.cc
compiling message.cc
compiling stack.cc
compiling gc.cc
compiling string.cc
compiling handles.cc
compiling function.cc
compiling heap.cc
compiling invocation.cc
compiling locker.cc
compiling object.cc
compiling array.cc
compiling constants.cc
compiling rr.cc
compiling signature.cc
compiling constraints.cc
compiling context.cc
context.cc: In static member function ‘static VALUE rr::Context::SetData(VALUE, VALUE)’:
context.cc:81:3: error: no matching function for call to ‘v8::Context::SetData(rr::String)’
context.cc:81:3: note: candidate is:
In file included from rr.h:4:0,
from context.cc:1:
/usr/include/v8.h:3721:8: note: void v8::Context::SetData(v8::Handle<v8::Value>)
/usr/include/v8.h:3721:8: note: no known conversion for argument 1 from ‘rr::String’ to ‘v8::Handle<v8::Value>’
make: *** [context.o] Error 1
Gem files will remain installed in /home/carlos/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0 for inspection.
Results logged to /home/carlos/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/therubyracer-0.11.0/ext/v8/gem_make.out
An error occurred while installing therubyracer (0.11.0), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.11.0'` succeeds before bundling.
我不知道发生了什么。
【问题讨论】:
也许尝试重新安装 v8,所以重新安装 Node?span> 相同。目前,我锁定了 0.10.2 版本,它运行良好。 【参考方案1】:其实,这有点棘手。
我使用我的自定义dotfiles,所以,我的路径中有~/.dotfiles/bin
。
我也是been noticed that the issue is related to python v3 vs v2。
所以,修复很简单,不会破坏我的系统:
ln -s /usr/bin/python2 ~/.dotfiles/bin
reload
gem install libv8 --verbose
bundle
像这样离开我的Gemfile
:
[...]
gem 'therubyracer', :require => 'v8', :platforms => :ruby
[...]
BOOM,它奏效了。
感谢你们的帮助。抱歉延迟回复。
干杯
编辑
问题已在较新的 therubyracer 版本 (0.11.1) 中得到修复。
【讨论】:
我使用的是 0.11.1 版本,但仍然需要将 python2 链接到 python 才能编译 libv8。 我最近格式化了我的整个系统,并且使用较新的 therubyracer 版本没有出现此问题.. dotfiles 链接上的链接断开【参考方案2】:我的 ArchLinux 也有同样的问题。这是known issue。通过在 Gemfile
中添加以下行来锁定到 0.10.2
gem 'therubyracer', '0.10.2', :platforms => :ruby
我已经对此进行了测试,它至少可以在 64 位上运行。希望它也对你有用。
【讨论】:
【参考方案3】:我强烈建议使用外部 Node.js(我确信有一个官方包),然后使用 sstephenson / execjs。
如果您使用的是 Rails,它已经依赖于 ExecJS,因此您可以删除对 therubyracer
的依赖,捆绑,安装 Node.js,一切顺利。
【讨论】:
【参考方案4】:您需要安装 libv8 3.11.x 才能获得最新版本的 therubyracer。 因此,请尝试更新 libv8,然后进行捆绑。
【讨论】:
以上是关于我无法在 Arch Linux x64 中安装 therubyracer的主要内容,如果未能解决你的问题,请参考以下文章
在 VirtualBox 虚拟机中安装 Arch Linux 系统指南
在 Arch Linux 中安装 GNOME 桌面所需步骤介绍