【问题标题】:How does MacPorts install packages? How can I activate a Ruby installation done via MacPorts?MacPorts 如何安装软件包?如何激活通过 MacPorts 完成的 Ruby 安装?
【发布时间】:2010-11-22 22:40:10
【问题描述】:

尝试使用以下命令行在我的机器(PPC、Mac OSX 10.5.7)上安装 ruby​​19 后

sudo port install ruby19

ruby 的版本没有变化

ruby -v => ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]

我假设我的 Mac 上安装了它的两个版本,但我现在如何使用最新版本?

【问题讨论】:

    标签: ruby macos shell macports


    【解决方案1】:

    我倾向于认为macports 通常将其所有内容保存在/opt/local 目录中。我正在使用 Leopard,我将它放在那个目录中。您可能想要查看那里,尤其是在 /opt/local/bin 内部,以找到您正在寻找的 ruby 二进制文件。

    【讨论】:

      【解决方案2】:

      如果您安装了两个版本,则要使用特定的 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 已经为我完成了这些工作,因为当我查找它的名称时,使用 ruby​​ 1.9 就像输入“ruby1.9 ... " 进入终端导出 PATH=/opt/local/bin:/opt/local/sbin:$PATH
      【解决方案3】:

      简单说明一下MacPorts。 Ayaz 是对的,默认情况下,MacPorts 会在 /opt/local 中安装东西。 (如果您愿意,这使得以后全局卸载变得容易,并且它使 MacPorts 包不受 OS X 包的影响。)

      当您安装 MacPorts 时,它通常会通过更新用户的 .profile 来为您编辑您的 $PATH(和您的 $MANPATH)(如果它不存在,则创建它) .

      作为预防措施,安装程序将创建原始 .profile 的备份,以防您想要回滚更改(或者如果您稍后完全卸载 MacPorts)。这是一个来自工作中的随机机器的示例。

      管理员 ~ $ ls .profile* .profile .profile.macports-saved_2009-08-03_at_14:55:56

      如果您查看 .profile,您应该会看到如下内容:

      ## # 你之前的 /Users/admin/.profile 文件被备份为 /Users/admin/.profile.macports-saved_2009-08-03_at_14:55:56 ## # MacPorts 安装程序在 2009-08-03_at_14:55:56 添加:添加适当的 PATH 变量以用于 MacPorts。 导出 PATH=/opt/local/bin:/opt/local/sbin:$PATH # 已完成调整 PATH 环境变量以与 MacPorts 一起使用。 # MacPorts 安装程序在 2009-08-03_at_14:55:56 添加:添加适当的 MANPATH 变量以用于 MacPorts。 导出 MANPATH=/opt/local/share/man:$MANPATH # 已完成调整您的 MANPATH 环境变量以与 MacPorts 一起使用。

      如果您的 $PATH 没有更新,您应该调整它,否则,您将无法使用 port 工具和通过 MacPorts 安装的软件。

      【讨论】:

        【解决方案4】:

        默认情况下,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

        如果您不想这样做,您有两种选择:

        1. 在您的 shell 配置文件中使用别名 rubyruby1.9
        2. 安装带有+nosuffix 变体的Ruby 1.9 端口。但是请注意,如果您通过 MacPorts 安装了 Ruby 1.8,通过 MacPorts 安装 Ruby 1.9 而没有 1.9 后缀可能会导致冲突(与 gems 等)。

        【讨论】:

        • 添加别名的另一种方法是在您的主文件夹中创建一个“bin”目录,并在其中创建指向 macport ruby​​ 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。)
        猜你喜欢
        • 2015-12-18
        • 2012-03-27
        • 2018-02-08
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 2011-11-22
        • 2017-08-15
        • 2014-07-14
        相关资源
        最近更新 更多