在ubuntu 12.04上,therubyracer gem不断导致bundle安装失败

时间:2012-12-18 23:07:30

标签: ruby-on-rails rubygems

我正在尝试使用capistrano进行部署,但由于rubyracer gem问题而失败。

我尝试将以下变体添加到gemfile,然后在ubuntu上部署到生产服务器,但没有任何作用:

1)
gem 'libv8', '3.11.8.3'

3)
gem 'therubyracer'
gem 'libv8', '3.3.10.4'

4)
gem 'libv8', '~> 3.11.8.3'

这一切都给出了同样的错误:

安装therubyracer(0.11.0)时发生错误,Bundler无法继续。 在捆绑之前确保gem install therubyracer -v'0.11.0'成功。

所以我试试这个:

group :production do
  gem 'therubyracer', '0.10.2', :platforms => :ruby
end

但是这导致了这个错误:

Bundler could not find compatible versions for gem "libv8":
 In Gemfile:
  therubyracer (= 0.10.2) ruby depends on
  libv8 (~> 3.3.10) ruby
 libv8 (3.11.8.3)

看来我目前在服务器上有两个版本的lib8:

libv8 (3.11.8.4, 3.3.10.4 x86_64-linux)

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

从stackoverflow尝试解决方案几个小时后,我只用2个命令从这个站点得到了一个简单的修复,作者提到了

  

安装therubyracer gem时,你可能会遇到这个问题   新机安装。

http://usefulprogrammingshit.drmcnasty.com/?p=12

sudo apt-get install g++
sudo apt-get install build-essential

我对ruby一无所知所以你需要更多地研究这个解决方案,但毕竟在ubuntu 14.04上安装了“therubyracer 0.12.2”。我希望它可以提供帮助。

答案 1 :(得分:1)

只需从您的计算机上卸载两个libv8

Terminal

gem uninstall libv8

在终端中,系统会提示您选择要卸载的版本,如下所示:

  1. libv8 3.3.10.4 x86_64-linux
  2. libv8 3.11.8.4 x86_64-linux
  3. 所有
  4. 选择3并按Enter键(返回键)。它将卸载您机器中安装的两个libv8版本。

    现在,在您的Gemfile中只包含不带libv8的therubyracer和bundle install

    gem 'therubyracer'
    bundle install
    

    它会起作用

答案 2 :(得分:0)

  1. 尝试将node.js作为运行时javascript环境,而不是libv8。

  2. 如果您坚持使用libv8,请不要指定版本。似乎版本上存在冲突。例如在您的Gemfile中:

    gem 'therubyracer'
    gem 'libv8'
    

答案 3 :(得分:0)

在生产服务器的命令行执行

gem install therubyracer