Ruby:版本不同导致的问题

Ruby:版本不同导致的问题

我之前发布过这个问题,但我的版本是 11.04,不支持。所以现在我更新到了 11.10,但问题仍然没有解决。
我想使用 ruby​​ 1.9.1。我面临的问题如下所示。我希望有人能帮助我。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"

$ sudo apt-get install ruby​​1.9.1-full
正在读取软件包列表...完成 正在
构建依赖关系树
正在读取状态信息...完成
ruby​​1.9.1-full 已经是最新版本。
已升级 0 个版本,新安装 0 个版本,要删除 0 个版本,未升级 19 个版本。

$ update-alternatives --config ruby
​​ update-alternatives:错误:没有 ruby​​ 的替代品。

$ ruby​​ -v
ruby​​ 1.8.7 (2010-08-16 补丁级别 302) [i686-linux]

$ ruby​​1.9.1
/usr/bin/ruby1.9.1

答案1

你可能会发现 rvm 很有用。Rvm 是一个命令行程序,允许你管理多个版本的 ruby​​。如果你感兴趣,你可以阅读更多关于它的内容这里

如果您只是想摆脱 Ruby 1.8.1,请运行以下命令: sudo apt-get remove ruby1.8

答案2

亚伦是正确的,我添加这个答案是为了进一步详细说明并提供更多细节。

这是 Rails 领域中一件大事,也是 Ruby 领域中一件大事(尽管没有那么糟糕)。

ruby 的系统版本必须必须是 1.8,否则某些已安装的应用程序将失败。有相当多的 UI 应用程序使用 ruby​​。但是 1.9 是新的选择,因此您更有可能希望在新项目中使用它(无论是 rails 还是纯 ruby​​)。

如果你正在开发一个应用程序,Ruby 版本管理器应该可以满足你的需求。你可以下载并安装它来自这个网站如果你尝试使用为 Ubuntu 打包的 1.9 版本,RVM 无法工作

RVM 仅在您的环境中加载。通常仅在您的命令行环境中加载(尽管这不一定是真的)。​​它从源代码编译 ruby​​,而不使用打包版本。这也是使用 ruby​​ 进行开发的公认方式,不是作为用户或消费者,或在生产中。

如果您要运行的应用程序需要 ruby​​,则应该为其指定 ruby​​ 路径。如果该应用程序是为 Ubuntu 构建的,则安装该应用程序就足够了。

如果你使用 Rails

不要使用系统 ruby​​ 或打包的 rails gems。它们完全不适合开发。相反,使用 RVM + bundler + gemsets 来管理您的设置。在生产环境中,您通常只使用 bundler。

如果你使用 ruby

不要使用系统 ruby​​ 或打包的 gems。rvm + gemsets 是构建新项目的可接受方式。在生产中,这会变得更加复杂,具体取决于目标。

如果你部署的是 Ruby 应用

然后,您需要确保在您了解的各个系统版本上运行测试套件。在 Ruby 中,补丁级别很重要,您需要确保您的代码可以正常工作,或者可以与正常工作的 Ruby 一起部署。

无耻的推销

可以找到从源代码编译工作的 ruby​​ 的说明在我的网站上。请注意,它适用于生产服务器,旨在用于 rails 环境。但如果您决定进行编译,它应该可以帮助您入门。

TL;DR;

  • RVM + gemsets = 开发 ruby​​ 应用程序
  • RVM + bundler + gemsets = 开发 rails 应用程序
  • bundler(以及特定版本的 ruby​​)= 生产 rails 应用程序
  • 系统 ruby​​ + 大量测试 = 生产 ruby​​ 应用程序

相关内容