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

4

在我的机器上(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上安装了两个版本的IT,但是现在我该如何使用最新的版本?
4个回答

9
默认情况下,在MacPorts中,Ruby 1.9的端口将Ruby二进制文件安装在 /opt/local/bin/ruby1.9。它附加了一个1.9来避免覆盖Ruby 1.8.7库和gems,因为不是所有的gems都与1.9兼容。所以你必须使用 ruby1.9 (和 irb1.9,等等) 来启动Ruby 1.9。
如果你不想这样做,你有两个选择:
  1. 在你的shell配置文件中将 ruby 别名为 ruby1.9
  2. 使用 +nosuffix 变量安装 Ruby 1.9 端口。然而,需要注意的是,如果你已经通过 MacPorts 安装了 Ruby 1.8,那么在没有带上 1.9 后缀的情况下通过 MacPorts 安装 Ruby 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)。 - atomicules
1
使用“+nosuffix”变体的方法已被新的MacPorts语法(自v2.1.3起?)所取代:“port select --set ruby ruby19”。这似乎适用于任何具有多个“版本”的软件包,尽管软件包的维护者需要单独实现对此的支持。select命令设置其中一个版本将可用而不带后缀(/opt/local/bin/ruby而不是/opt/local/bin/ruby19)。 - beporter

5
如果你安装了两个 Ruby 版本,想要使用一个特定的版本,你可以指定该版本的绝对路径,例如 /your/path/to/ruby。或者你可以在 .profile 中更改 PATH 设置。
你可以输入以下命令:
which ruby

查看当前使用的 Ruby 可执行文件的路径。

使用

echo $PATH

您可以查看当前的PATH设置。您需要在PATH之前添加新的ruby二进制文件的路径,以便在其他路径之前找到它。
正如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 ...”即可。导出路径= / opt / local / bin:/ opt / local / sbin:$ PATH - Julian Weimer

2
关于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 ##
# 2009年8月3日14:55:56的MacPorts安装程序添加:添加适用于MacPorts的适当PATH变量。 export PATH=/opt/local/bin:/opt/local/sbin:$PATH # 已完成调整您的PATH环境变量以适用于MacPorts。
# 2009年8月3日14:55:56的MacPorts安装程序添加:添加适用于MacPorts的适当MANPATH变量。 export MANPATH=/opt/local/share/man:$MANPATH # 已完成调整您的MANPATH环境变量以适用于MacPorts。

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

1
我倾向于认为macports通常将所有东西都保存在/opt/local目录中。 我正在使用Leopard,并且将其放置在该目录中。 您可能希望查找其中的内容,特别是/opt/local/bin,以找到您要查找的ruby二进制文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接