我下载并编译了最新版本的Ruby 1.9.2,该版本安装在 /usr/local/bin/ruby, 但是,该系统正式承认 /usr/bin/ruby 仅安装在机器上的1.8.7。我如何将新红宝石纳入到位?

在这种情况下,我需要替换Ruby版本,并能够将更新版本用于命令行工作和Rails开发。

有帮助吗?

解决方案

您应该使用 RVM, ,Ruby版本管理器。它允许多次并排安装Ruby,而不会影响系统Ruby安装,正如另一位评论者指出的那样 可能 有问题(或至少要维持厌烦)。

它使您可以快速,轻松地安装最新的红宝石,过去的红宝石版本,甚至是Jruby,Macruby或Rubinius等替代实现。

安装:

$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

安装后,将1.9.2设置为默认值与键入一样简单:

rvm default 1.9.2

如果您想暂时切换到1.8.7:

rvm use 1.8.7

其他提示

“将新的红宝石融入到位”是什么意思?

如果您尝试使用命令从命令行中运行它 ruby, ,系统将搜索指定的每条路径 /etc/paths 直到找到匹配为止。在雪豹中,默认 /etc/paths 文件看起来像这样:

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

所以当你进入 ruby 在命令行,系统寻找 /usr/bin/ruby 首先,找到它,不检查其余的路径(因此 /usr/local/bin/ruby)。要确认这一点,您可以输入 which ruby 在命令行,系统将打印其将用于该命令的可执行文件的路径。

如果您想从命令行运行较新版本的Ruby,只需输入 /usr/local/bin/ruby 代替 ruby.

如果您使用的是间接使用Ruby的另一个程序,则可能有一个选项来指定通往路径的路径 ruby.


编辑: 作为最后的手段, ,您可以使用较新版本覆盖Ruby的内置系统版本。使用以下命令,并在提示时输入您的管理员密码:

cp /usr/bin/ruby ~/Desktop/ruby_OLD
sudo cp /usr/local/bin/ruby /usr/bin/ruby

如果某件事破裂,请将其放回此命令:

sudo mv ~/Desktop/ruby_OLD /usr/bin/ruby

但是,正如其他人所提到的,使用RVM这样的工具来管理Ruby比升级内置安装是一个更好的主意。

如果您真的想替换现有的 /usr/bin/ruby (这只是一个符号链接 /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby )只需覆盖现有文件,您要仔细地匹配文件权限。

不这样做的原因很多,但是考虑到您的问题的字面解释,这就是简单的。

大多数人将自己的路径更改为在系统之前将较新的红宝石包含在内,因为这更简单,不太可能破坏取决于Ruby和相关的Dylib,Gems,rdocs的其他版本,并且保持相同。

的好处之一 自制FinkRVMMacports 是否有助于将分期自动化为替代位置并支持修改您的路径。

您可以使用您的红宝石做同样的事情 /usr/local/bin 通过操纵路径变量并使用 which -a ruby 仔细检查您的工作。

在提供的苹果提供的OME之前找到任何自动安装程序的方法是将新程序的目录(例如/usr/local/bin)添加到路径环境变量的Fromt。

如果您是从shell编辑中运行ruby〜/.。

您可能想看看 自制, ,这使安装最新的Ruby变得容易 - brew install ruby 是您所需要的吗?还有许多其他软件包,没有干扰系统上的任何内容 $PATH.

许可以下: CC-BY-SA归因
不隶属于 apple.stackexchange
scroll top