在Snow Leopard上安装最新版本的Ruby
题
我下载并编译了最新版本的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的其他版本,并且保持相同。
的好处之一 自制 和 Fink 和 RVM 和 Macports 是否有助于将分期自动化为替代位置并支持修改您的路径。
您可以使用您的红宝石做同样的事情 /usr/local/bin
通过操纵路径变量并使用 which -a ruby
仔细检查您的工作。
在提供的苹果提供的OME之前找到任何自动安装程序的方法是将新程序的目录(例如/usr/local/bin)添加到路径环境变量的Fromt。
如果您是从shell编辑中运行ruby〜/.。
您可能想看看 自制, ,这使安装最新的Ruby变得容易 - brew install ruby
是您所需要的吗?还有许多其他软件包,没有干扰系统上的任何内容 $PATH
.