在Ubuntu 10.04安装Rails时出现错误

22

我尝试在Ubuntu 10.04上安装Rails。到目前为止,我已经执行了这些命令:

apt-get install build-essential libapache2-mod-passenger apache2 rubygems ruby1.8-dev libopenssl-ruby
gem install fastthread
gem install rails

Fastthread 安装很容易。但是尝试安装 Rails 会导致以下问题:

ERROR:  Error installing rails:
    bundler requires RubyGems version >= 1.3.6

所以,我尝试了gem -v,它返回了1.3.5

如何升级rubygems?apt-get无法安装高于1.3.5版本的rubygems。而gem update --system会产生以下结果:

ERROR:  While executing gem ... (RuntimeError)
    gem update --system is disabled on Debian. RubyGems can be updated using the official Debian repositories by aptitude or apt-get.

我现在无法安装 Rails,因为我需要一个更新的 RubyGems 版本,而 Ubuntu 不允许我升级当前版本的 RubyGems。

另外,我尝试使用 apt-get install rails 安装 Rails,似乎成功了,但是当我输入 gem list 时却没有看到 rails。这是怎么回事?

另外注意:输出的 gem list 结果为:

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.1, 3.0.0)
actionpack (3.0.1, 3.0.0)
activemodel (3.0.1, 3.0.0)
activerecord (3.0.1, 3.0.0)
activeresource (3.0.1, 3.0.0)
activesupport (3.0.1, 3.0.0)
arel (2.0.1, 1.0.1)
builder (2.1.2)
erubis (2.6.6)
fastthread (1.0.7)
i18n (0.4.2)
mail (2.2.9)
mime-types (1.16)
mysql (2.8.1)
polyglot (0.3.1)
rack (1.2.1)
rack-mount (0.6.13)
rack-test (0.5.6)
railties (3.0.1, 3.0.0)
rake (0.8.7)
rubygems-update (1.3.7)
thor (0.14.4)
treetop (1.4.8)
tzinfo (0.3.23)

我假设通过apt-get安装Rails也安装了那些gem包。在使用apt-get安装Rails之前,我只有mysql和fastthread。


我遇到了完全相同的问题。你解决了吗? - Genadinik
有趣的是,即使我安装了rubygems 1.7.2,我仍然收到了这条消息 :) - Genadinik
5个回答

42

还有一个可用的宝石(gem),可处理更新(update)

sudo gem install rubygems-update
sudo /var/lib/gems/1.8/bin/update_rubygems

4
完美的答案。帮了我很多。在我的情况下,我只是有另一个gems版本,所以我需要执行以下操作:sudo /var/lib/gems/1.9.1/bin/update_rubygems - Ramon Araujo
1
这个答案是摆脱Ubuntu/Ruby/Gem噩梦的出路,谢谢! - mkoistinen

6

您需要手动安装RubyGems 1.3.7(从网站下载wget,提取,运行setup.rb)。


6

1
Fábio是正确的。许多Linux发行版已经落后,不了解当前Ruby世界的状态。Python也存在类似的问题。RVM解决了这个问题(而且你还可以免费获得一些灵活性!)。自从我开始使用RVM(和Bundler)以来,在Ubuntu或Mac OS X上安装gem时,我往往不会遇到问题。 - Scott

2
这可能是一种以前没有的新方法,但我运行了。
sudo gem update --system

它给了我最新版本。


1

由于某些原因,Debian/Ubuntu的Ruby包不包含RubyGems库。更糟糕的是,尽管RubyGems被捆绑到Ruby 1.9.x中,但如果您尝试通过apt-get安装它,软件包管理器将强制您将它们安装为两个单独的软件包。

正如您所注意到的那样,Debian/Ubuntu RubyGems软件包已经过时了,并且为了使事情更加复杂,您不能仅通过在其上安装新的RubyGems版本来升级打包版本的RubyGems,因为系统被修补以防止您完成任务,正如您所经历的那样。

我的建议是避免使用Ubuntu/Debian打包版本。 替代方案有:

  1. 对于开发系统,请使用RVM
  2. 对于生产服务器,请从源代码安装Ruby。 如果您想要使用小于1.9的Ruby,则可以使用Ruby Enterprise版,该版也可用作Debian/Ubuntu软件包。 如果您需要Ruby 1.9.x,则从源代码编译。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接