如何在Debian Lenny上安装Ruby 1.9.2?

14
我想在我的Debian Lenny服务器上安装最新的Ruby和Rails。
我找到了包http://packages.debian.org/lenny-backports/ruby1.9.1-full,但是当我尝试安装时,只会收到以下错误提示:
atlas:~# apt-get install ruby1.9.1-full
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Couldn't find package ruby1.9.1-full

我的sources.list文件看起来像这样:

atlas:~# cat /etc/apt/sources.list

deb http://ftp.se.debian.org/debian/ lenny main non-free contrib
deb-src http://ftp.se.debian.org/debian/ lenny main non-free contrib

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

我需要做什么才能安装它?

superuser 可能是更好的提问地点。 - vikingosegundo
@vikingosegundo:我同意。这个问题与编程无关。它基本上是“如何使用我的操作系统”的问题,这是SuperUser类型的问题,尽管它可能更适合Unix & Linux StackExchange,但目前没有办法将问题迁移到那里。 - Jörg W Mittag
嗯,好的,直到现在我从未听说过超级用户,感谢你指出来。 - Jeena
@jorg unix.SE最近已经上线了,您可以再次检查一下吗? - tshepang
6个回答

17

停止。返回。安装Debian有的任何Ruby版本,可能是1.8.7或1.9.3。然后安装RVM。我有一些关于在Ubuntu上使用RVM的说明(抱歉,不是Debian,但很接近)。真的,RVM使得安装任何版本的Ruby都变得容易。然后,使用RVM安装Ruby 1.9.2,而不是1.9.1。

这取决于你想要使用Ruby做什么。对于开发目的,使用RVM效果非常好。对于服务器用途,我想它也可以用,但你可能会遇到一些问题。我认为RVM提供了一些脚本,可以在init脚本和cron作业中运行Ruby脚本。

或者,你可以直接从源代码安装。这并不难,也不符合Debian的方式,但可以完成工作。这可能比安装一些第三方软件包更可取,因为你可能根本不知道它们在编译时做了什么,并且如何在安全漏洞的情况下获得快速更新。使用RVM或手动从源代码安装,你可以在需要时进行更新。


我已经从源代码尝试了两天。Ruby不是问题,但每次我都会遇到rubygems或其他问题,当我最终让gem工作并安装东西时,当我想运行脚本时,它总是显示:“gem_prelude.rb:114:in push_gem_version_on_load_path':未定义方法<=>' for nil:NilClass(NoMethodError)"。 - Jeena
很奇怪...我已经多次从源代码安装了Ruby(现在专门使用RVM,我真的无法更加推荐它),但我从未遇到过这样的情况。但首先,你是在尝试安装1.9.1吗?因为1.9.1从未得到广泛支持(它有点像实验性分支),如果你想要一个Ruby 1.9.x,你应该使用Ruby 1.9.2。另外请注意,Ruby 1.9.2已经预装了Rubygems,所以如果你尝试安装它,你只会遇到更多问题。你只需要安装Ruby 1.9.2,然后sudo gem install rails。就这样。 - AboutRuby
我认为问题在于如果我从源代码安装,我不知道它安装到哪里,因此无法使用正确的gem命令或其他命令。经过两天的尝试,发现同名的多个版本散落在各处。 ;) - Jeena
我需要这个用于我的服务器,并且我想使用Passenger及其Apache模块与1.9.2和Rails 3一起使用,这是否可行?我在他们的网站上阅读有关RVM的信息,他们无论何时都说它是每个控制台的。 - Jeena
首先安装rvm,然后安装你喜欢的Ruby版本(我建议在服务器上使用REE,除非你需要特定的1.9.2功能)。安装Passenger gem后,触发它提供的易用向导(你可以选择Apache或Nginx模块)。 - Simone D'Amico
2
我觉得我应该为未来的读者指出这一点 - Debian中的ruby1.9.1软件包实际上包含Ruby 1.9.2。 - user269597

8

首先运行以下命令:

apt-get update

然后安装 Ruby

apt-get install ruby

然后您需要安装RubyGems。
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz

解压RubyGems...

tar xvf rubygems-1.3.5.tgz
cd rubygems-1.3.5
ruby setup.rb
ln -s /usr/bin/gem1.8 /usr/bin/gem

现在更新RubyGems。
gem update --system

现在我们可以安装Rails

gem install rails

您可以使用以下命令检查安装是否成功:
ruby -v
rails -v
gem -v

如果您需要更多帮助,请告诉我!
如果您想要使用 Ruby 1.9.2,请替换以下命令:
apt-get install ruby

使用

apt-get install ruby1.9

如果您需要开发头文件,只需安装ruby1.9-dev即可。
apt-get install ruby1.9-dev

如果您无法按照此方式安装它们,则需要查看apt-get源。
apt-cache search ruby1.9

libhtree-ruby1.9 - HTML/XML tree library for Ruby 1.9
....
libinotify-ruby1.9 - Ruby interface to Linux's inotify system
....
libdbm-ruby1.9 - DBM interface for Ruby 1.9
libgdbm-ruby1.9 - GDBM interface for Ruby 1.9
....
**ruby1.9-dev** - Header files for compiling extension modules for the Ruby 1.9
ruby1.9-elisp - ruby-mode for Emacsen
ruby1.9-examples - Examples for Ruby 1.9
**ruby1.9** - Interpreter of object-oriented scripting language Ruby 1.9
libstfl-ruby1.9 - Ruby bindings for the structured terminal forms language/library

我希望这能有所帮助。我建议使用RVM(但我没有在这里涉及..)

2
这将安装 Ruby 1.8 版本,我需要的是 Ruby 1.9.2 版本。 - Jeena

4
RVM是一个很好的解决方案,但不适用于生产环境。它的$ PATH魔法太过微妙且经常会出现故障。我建议您为自己构建.deb文件。您可以从源代码编译Ruby,然后使用checkinstall进行安装。然后,您可以将所创建的.deb文件分发到任何计算机,并像使用任何软件包一样使用dpkg进行安装/卸载。这里有一个在Ubuntu中进行此操作的教程,应该很容易转换成Debian。

3

不要使用Debian安装任何Ruby,最近主要维护者之一已经放弃了它们:http://www.lucas-nussbaum.net/blog/?p=617 Debian的Rubies过去常常出现问题且难看,因此现在最好的安装方式是使用rvm,这是一个小程序,可以在同一台机器上管理gemset和不同版本的Rubies。


2

如果您想从 Lenny 的后续支持存储库安装软件包,显然需要在您的 sources.list 中拥有它:

deb http://Backports.Debian.Org/debian-backports lenny-backports main contrib non-free
deb-src http://Backports.Debian.Org/debian-backports lenny-backports main contrib non-free

由于后备库不像其他软件包那样需要经过严格的质量审核,因此默认情况下是禁用的。如果您想从后备库安装软件包,则必须显式地将发行版传递给 apt-getaptitude,就像使用 experimental 库一样:

apt-get -t lenny-backports install ruby191-full # or
aptitude -t lenny-backports install ruby191-full

由于回溯的软件包默认是禁用的,因此您甚至不会收到它们的安全更新,除非您在 /etc/apt/preferences 中添加了固定版本:

Package: *
Pin: release a=lenny-backports
Pin-Priority: 200

所有这些都在Debian Backports网站上清晰地说明了。

请注意,您应该小心不要混合使用软件包管理系统。您应该通过APT 或者 RubyGems 安装所有Ruby库,但通常不建议混用它们。

此外,如果您使用Debian的RubyGems软件包,您应该只通过APT更新它,而不是通过RubyGems的内置更新机制(gem update --system)。实际上,我相信在当前版本中,Debian已经删除了更新机制以防止这种情况,但并非总是如此。

就我个人而言,在生产服务器上我使用Debian Ruby软件包没有任何问题,并且我根本不使用RubyGems,我只使用Debian提供的Ruby库。


2

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