在Ubuntu上安装Ruby 1.9.1?

44

我想了解如何在Ubuntu 9.04上安装最新版本的Ruby。现在,我可以顺利运行./configuremake,但我想知道:如何避免与软件包系统的冲突?例如,如果我安装的某个其他软件包依赖于Ruby,那么软件包管理器会安装(已经过时的)Ruby软件包,在最坏的情况下还会覆盖我的文件吗?

所以,我认为我需要告诉Ubuntu Ruby已经安装好了。


那么,出于纯好奇,有没有任何理由使用最新版本的Ruby?我的意思是,成为前沿技术很棒,但这个最新版本是否真的有你需要的功能,而旧版本没有呢?如果没有,升级似乎有点不必要。 - thebrokencube
11
我同意 - 首先它支持Unicode,速度也更快,而且据说修复了旧版本的一些内存泄漏问题。虽然我不是Ruby专家。但是,我正在开发Mac上的项目,并且注意到MacPorts附带的Ruby 1.9.1与Ubuntu附带的1.9.0版本不兼容。对我来说,Unicode确实是最重要的。我听说在Ruby 1.8下Rails可以使用Unicode,但我找不到明确的信息。此外,我的应用程序不仅限于Rails应用程序,还包括独立的Ruby应用程序。 - Björn
3
Ruby 1.9.1(补丁243)作为一个软件包随karmic koala一起发布。 - Sam Saffron
很奇怪,即使在Ubuntu 10.10上,Ruby 1.9.1也显示为虚拟的。为什么不能通过apt安装它呢?真是怪异。 - Thufir
8个回答

61

避免麻烦,使用RVMRuby版本管理器)。

请记住,Rails 3与Ruby 1.9.2最配。 Ruby 1.9.2修复了1.9.1中的许多错误,因此比运行1.9.1更可取。

通过RVM安装1.9.2非常容易。


2
今天我终于在OSX上尝试了这个,感觉棒极了。这个页面特别有帮助:http://www.rubyinside.com/rvm-ruby-version-manager-2347.html - Dan Rosenstark
2
虽然 rvm install 1.9.1 看起来是一个友好的命令,但它让我陷入了长达两个小时的痛苦之旅,因为它导致了一系列错误的补丁。为了保持你的理智,最好直接使用 apt-get 安装。当 rvm 像大多数 Ruby 库一样正常工作时,它还是很不错的。 - Milimetric
1
rvm 是一个非常复杂的工具。虽然它可能适用于某些情况,但我浪费了半天时间来使用它。Ubuntu 12.10 自带 Ruby 1.9.3,所以没有什么理由去折腾 rvm - Ross Smith II
@RossSmithII 我很好奇为什么你遇到了这个问题,我猜你尝试使用sudo安装rvm。 - Sam Saffron
这个救了我一命!https://dev59.com/D2ox5IYBdhLWcg3wqmBt#9056395 - mlunoe
显示剩余2条评论

34

ruby -v 仍然显示版本1.8.7。 - john-jones
你可能需要执行 sudo apt-get remove ruby - Ian Vaughan
“sudo apt-get remove ruby” 对我不起作用,我正在使用Ubuntu 11.10 beta。但是,“sudo apt-get autoremove” 却可以正常工作。然后,ruby -v 将给出1.9.2的版本。(我正在安装ruby1.9.2-full) - schrodinger's code
8
您还需要运行 sudo update-alternatives --config ruby 命令将默认版本更改为1.9.x。无需卸载1.8版本。(根据我对此问题的回答)。 - kristianp

28

运行之后

sudo apt-get install ruby1.9.1-full

解决方法是运行以下命令:

sudo update-alternatives --config ruby

然后你会得到这个输出:

   There are 2 choices for the alternative ruby (providing /usr/bin/ruby).

     Selection    Path                Priority   Status
   ------------------------------------------------------------
   * 0            /usr/bin/ruby1.8     50        auto mode
     1            /usr/bin/ruby1.8     50        manual mode
     2            /usr/bin/ruby1.9.1   10        manual mode

   Press enter to keep the current choice[*], or type selection number: 2
   update-alternatives: using /usr/bin/ruby1.9.1 to provide /usr/bin/ruby (ruby) in    manual mode.
   $ ruby --version
   ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

这个解决方案的功劳归于回答https://askubuntu.com/questions/91693/how-do-you-uninstall-ruby-1-8-7-and-install-ruby-1-9-2的人。目前,ruby1.9.1软件包实际上是ruby 1.9.2。


1
谢谢你,我刚刚浪费了半天的时间卸载、重新安装、编译和重新编译源代码,然后使用rvm,一直在想为什么“ruby -v”始终返回1.8.7。我不知道为什么这个问题至少没有出现在RVM安装页面上。 - ctd
sudo apt-get install ruby1.9.1-full 不再起作用了。 - Idemax
现在可能是使用sudo apt-get install ruby-full命令进行安装(尽管我还没有尝试过)。 - kristianp

7

我采用的方法是使用checkinstall来构建deb包。因此,我下载了Ruby 1.9.1源代码,执行了"configure"和"make"命令,然后使用"checkinstall"命令并将包命名为ruby1.9,这样它就会安装为新版本的Ruby 1.9(正如它应该安装的那样),同时保留了HTML标签。


4
我从这个网站获取了有关Ruby的具体信息。 使用--prefix=/path开关可以将大多数软件安装在不同的目录中。如果是为您的电脑上的每个人安装,则通常会在/opt/中安装,如果仅为您自己安装,则可以在$HOME中安装。
要在/opt/中安装,请执行以下操作:
$ ./configure –prefix=/opt/ruby
$ make install

如果您想使用/opt安装的Ruby,请编辑您的~/.bashrc文件并添加以下内容:
export PATH=/opt/ruby/bin/:$PATH

如果您不想将自定义的Ruby版本设置为默认版本,可以将以下内容添加到您的~/.bashrc文件中,而不是使用前面的命令。
function setupruby {
     export PATH=/opt/ruby/bin/:$PATH
}

谢谢,非常有帮助 - 至少这样我可以避免冲突。 - Björn

4

1
我为 Ruby 1.9.2 创建了一个启动器 PPA。详细信息请参见下面的链接。

http://www.humbug.in/2010/launchpad-ppa-for-ruby-1-9-2-and-some-ruby-bindings/

sudo add-apt-repository ppa:pratikmsinha/ruby192+bindings
cd /etc/apt/sources.list.d/; sudo mv pratikmsinha-ruby192+bindings-lucid.list pratikmsinha-ruby192bindings-lucid.list
sudo aptitude update
sudo aptitude install ruby1.9.2

我已经将 Ruby 1.9.2 正式版本添加到我的 PPA 中。 - freethinker
在这里阅读更多相关信息:http://www.humbug.in/2010/ruby-1-9-2-final-build-for-ubuntu-lucid-uploaded-to-launchpad-ppa/ - freethinker

0

通过 Synaptic 查看,似乎您甚至不必处理 Multiverse 或第三方存储库。但由于 sudo apt-get install ruby 目前安装了一个别名到 ruby1.8,您应该显式地安装 ruby1.9 - 手动或通过存储库 - 并自己创建别名 ruby

您可能希望将二进制文件放在 /usr/bin 中,因为这是发行版会放置它的位置。不过,在您的 PATH 上的任何位置都可以。


我的印象是,在存储库中只有Ruby 1.9.0版本,似乎与Ruby 1.9.1不兼容。然而,1.9.1被认为是最终发布的版本,而1.9.0只是从某个时候开始的开发版本。 - Björn
你说得对。看起来现在你必须自己构建它。 - Nikhil

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