MacPorts如何安装软件包?如何通过MacPorts激活Ruby安装?

时间:2009-08-26 09:54:36

标签: ruby macos shell macports

尝试使用以下命令行在我的机器(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上安装了两个版本,但我现在如何使用最新版本?

4 个答案:

答案 0 :(得分:9)

默认情况下,MacPorts中的Ruby 1.9端口在/opt/local/bin/ruby1.9中安装Ruby二进制文件。它附加了1.9以避免踩踏Ruby 1.8.7库和宝石,因为并非所有宝石都与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后缀可能会导致冲突(使用宝石等)。

答案 1 :(得分:5)

如果您安装了两个版本,要使用特定的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将总是更喜欢二进制文件到稍后找到的二进制文件,如果您依赖于特定版本,这可能是一个问题in / bin,/ sbin或/ usr / sbin - 根据您的情况,这意味着您不应该这样做(如果您的计算机正在处理敏感数据和/或银行或其他东西)或只是要记住它可以是个问题(如果您的计算机是普通的开发机器)。

如果您需要更多关于如何在osx上设置PATH的提示,请参阅http://www.tech-recipes.com/rx/2621/os_x_change_path_environment_variable/

答案 2 :(得分:2)

快速澄清一下MacPorts。 Ayaz是对的,默认情况下,MacPorts会在 / opt / local 中安装内容。 (这样可以在以后全面卸载,如果需要,它可以使MacPorts软件包远离OS X软件包。)

当您安装MacPorts时,它通常会通过更新用户的 .profile (创建它,如果它没有'来为您编辑$PATH(以及您的$MANPATH)已存在)。

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

admin ~ $ ls .profile*
.profile  .profile.macports-saved_2009-08-03_at_14:55:56

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

##
# Your previous /Users/admin/.profile file was backed up as /Users/admin/.profile.macports-saved_2009-08-03_at_14:55:56
##

# MacPorts Installer addition on 2009-08-03_at_14:55:56: adding an appropriate PATH variable for use with MacPorts.
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
# Finished adapting your PATH environment variable for use with MacPorts.

# MacPorts Installer addition on 2009-08-03_at_14:55:56: adding an appropriate MANPATH variable for use with MacPorts.
export MANPATH=/opt/local/share/man:$MANPATH
# Finished adapting your MANPATH environment variable for use with MacPorts.

如果您的$ PATH 尚未更新,则应进行调整,否则,您将无法使用port工具和通过MacPorts安装的软件。

答案 3 :(得分:1)

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