【发布时间】:2010-11-22 22:40:10
【问题描述】:
尝试使用以下命令行在我的机器(PPC、Mac OSX 10.5.7)上安装 ruby19 后
sudo port install ruby19
ruby 的版本没有变化
ruby -v => ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
我假设我的 Mac 上安装了它的两个版本,但我现在如何使用最新版本?
【问题讨论】:
尝试使用以下命令行在我的机器(PPC、Mac OSX 10.5.7)上安装 ruby19 后
sudo port install ruby19
ruby 的版本没有变化
ruby -v => ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
我假设我的 Mac 上安装了它的两个版本,但我现在如何使用最新版本?
【问题讨论】:
我倾向于认为macports 通常将其所有内容保存在/opt/local 目录中。我正在使用 Leopard,我将它放在那个目录中。您可能想要查看那里,尤其是在 /opt/local/bin 内部,以找到您正在寻找的 ruby 二进制文件。
【讨论】:
如果您安装了两个版本,则要使用特定的 ruby 版本,您可以指定所需版本的绝对路径。例如。 /your/path/to/ruby 或者您可以在 .profile 中更改 PATH 设置
你可以输入
which ruby
查看当前使用的 ruby 可执行文件的路径。
使用
echo $PATH
您可以看到当前的 PATH 设置。您必须将新 ruby 二进制文件的路径添加到 PATH 中,以便在另一个之前找到它。
正如ayaz 已经提到的,你的macports 的默认位置是在/opt/local。如果您在路径前添加 /opt/local/bin 应该没问题。 (确保在更改后启动一个新的终端窗口 - 除非您再次明确地“获取” .profile 文件,否则它们不会在当前会话中被拾取)
注意一点:在您的路径前添加 /opt/local/bin 后,shell 将总是更喜欢其中的二进制文件而不是稍后找到的二进制文件,如果您依赖特定版本,这可能是一个问题在 /bin、/sbin 或 /usr/sbin - 根据您的情况,这意味着您不应该这样做(如果您的计算机正在处理敏感数据和/或在银行或其他地方),或者只需要记住它可以是一个问题(如果您的计算机是一台普通的开发机器)。
如果您需要有关如何在 osx 上设置 PATH 的更多提示,请参阅 http://www.tech-recipes.com/rx/2621/os_x_change_path_environment_variable/。
【讨论】:
简单说明一下MacPorts。 Ayaz 是对的,默认情况下,MacPorts 会在 /opt/local 中安装东西。 (如果您愿意,这使得以后全局卸载变得容易,并且它使 MacPorts 包不受 OS X 包的影响。)
当您安装 MacPorts 时,它通常会通过更新用户的 .profile 来为您编辑您的 $PATH(和您的 $MANPATH)(如果它不存在,则创建它) .
作为预防措施,安装程序将创建原始 .profile 的备份,以防您想要回滚更改(或者如果您稍后完全卸载 MacPorts)。这是一个来自工作中的随机机器的示例。
如果您查看 .profile,您应该会看到如下内容:
如果您的 $PATH 没有更新,您应该调整它,否则,您将无法使用 port 工具和通过 MacPorts 安装的软件。
【讨论】:
默认情况下,MacPorts 中的 Ruby 1.9 端口会在 /opt/local/bin/ruby1.9 中安装 Ruby 二进制文件。它附加了一个1.9 以避免踩踏Ruby 1.8.7 库和gem,因为并非所有gem 都与1.9 兼容。所以你必须用ruby1.9(和irb1.9等)启动Ruby 1.9
如果您不想这样做,您有两种选择:
ruby 到 ruby1.9。+nosuffix 变体的Ruby 1.9 端口。但是请注意,如果您通过 MacPorts 安装了 Ruby 1.8,通过 MacPorts 安装 Ruby 1.9 而没有 1.9 后缀可能会导致冲突(与 gems 等)。【讨论】:
ln -s /opt/local/bin/ruby1.9 ruby 和 gem ln -s /opt/local/bin/gem1.9 gem 的链接,然后首先在您的路径中获取它export PATH=~/bin:$PATH。这样做的好处是它允许 MacVim 选择正确的 Ruby 版本(它不识别别名,只识别 $PATH)。
+nosuffix 变体的方法已被新的 MacPorts 语法(从 v2.1.3 起?)取代:port select --set ruby ruby19。这应该适用于具有多个可用“版本”的任何包,尽管包的维护者似乎需要单独实现对此的支持。 select' command sets which of those versions will be available without the suffix (/opt/local/bin/ruby` 而不是/opt/local/bin/ruby19。)