通过Mac Ports在Mac OSX上使用Ruby

29

我对Ruby和Mac OSX都很新,但是我有相当多的Unix命令使用经验。我刚刚通过MacPorts命令(port install ruby19)安装了Ruby 1.9。然后我需要从根目录开始查找才能找到它所在的位置:/opt/local/var/macports/software/ruby19/1.9.1-p376_0/opt/local/bin/ruby1.9。

当前版本的Ruby(1.8.6)通过/usr/bin/ruby运行,这是指向/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby的符号链接,其中“Current”是指向名为1.8的目录的符号链接。

我想将Ruby 1.9设置为默认版本(以及相关工具如irb),虽然我可以做到这一点,但我想知道是否有常规的方法。我应该将MacPorts路径复制或链接到/System/Library/Frameworks/Ruby.framework/Versions/1.9,并将Current指向1.9吗? (我还必须重命名或复制可执行文件:ruby1.9到ruby,irb1.9到irb等)。或者我应该删除/usr/bin/ruby链接(和/usr/bin/irb等),并创建指向MacPorts版本的新链接?


1
你不应该删除(或者说,根本不要碰)系统自带的 Ruby(或 Perl 或 Python)。将它保持原样。系统期望它在那里,并且你事先无法知道有多少(或哪些)东西依赖于它。在这种情况下,rvm 是一个管理多个 Ruby 解释器的绝佳工具,但总有比“删除默认值”更好的答案。 - Telemachus
所有的rvm建议都是“稻草人”的好例子。具体来说,您想要一个系统ruby,一个可以在任何地方使用的ruby。您希望/opt/local/bin/ruby成为ruby1.9。现在,unix提供了$PATH变量,因此,如果您正确设置了路径(似乎您已经这样做了),则不会查找/usr/bin/${ruby binaries}。RVM是一个很棒的工具,除非您想默认每天使用ruby。 - chiggsy
1
安装 Ruby19 +nosuffix 端口,顺便说一句 ;) - chiggsy
我想要能够从XCode执行makefiles中的ruby 1.9脚本。RVM会将大量内容放入环境变量中。有人知道一种安装1.9并指示XCode从makefiles运行它的方法吗? - peterk
7个回答

28

在MacPorts 2.1.3下,您可以轻松使用端口选择命令。

$sudo port select --set ruby ruby19

4
这显然是现在MacPorts的“正确”做法,而不是使用+nosuffix - beporter

26

安装nosuffix变体:

sudo port install ruby19 +nosuffix

你的新版本 Ruby 现在应该比预装的版本更优先。


2
谢谢,这非常有帮助。我没有看到那个选项。 - Greg Charles

25

我的建议:

$ port uninstall ruby1.9

那么请按照以下步骤操作:https://rvm.io/rvm/install/

然后:

$ rvm install 1.9.2
$ rvm --default 1.9.2

你甚至可以使用 rvm install macruby 来玩弄 Cocoa。


在这里点个赞,同时可以查看Homebrew的其他软件包管理功能:http://github.com/mxcl/homebrew - Jed Schneider
谢谢!Rvm 看起来有点需要承诺,但可能值得努力。 - Greg Charles
1
rvm有很多选项,但是作为入门,你只需要掌握这三个:rvm install用于安装新的Ruby,rvm use用于切换版本,偶尔使用rvm update来获取新内容。其他所有选项都可以在需要时学习(例如多版本测试)。 - Amadan
虽然这个解决方案很好,但它并没有回答 TS 的问题 - "如何使用工具XXX?不要使用XXX"。 - ursa

19

在最新版本的macports(2.1.3或更高版本)中,您可以使用port select命令。

port select --list ruby
sudo port select --set ruby ruby19

对于早期版本的MacPorts,您可以创建一个符号链接到有编号的Ruby版本。这是MacPorts通常处理在不同版本的软件包之间切换的方式。

cd /opt/local/bin
sudo ln -s ruby1.9 ruby

5

我强烈推荐使用 RVM。虽然需要一些阅读,但一旦安装完成,您就可以使用 rvm install 1.9(或 jruby、ree、1.8 等)安装 Ruby,并使用 rvm 1.9 在它们之间切换。每个 Ruby 版本还将拥有自己完全隔离的 RubyGems 集合。


2
ruby1.9二进制文件应安装在/opt/local/bin目录下;如果没有安装,可能是您未激活该端口。
将Ruby 1.9设置为默认根目录的最简单方法是创建一个别名将ruby指向ruby1.9。如果使用Bash,则可以通过在Bash配置文件中添加以下内容来实现:
alias ruby='/opt/local/bin/ruby1.9'

谢谢指出。我确实有/opt/local/bin/ruby1.9。我可能会使用符号链接来启用它,而不是别名,但两种方式都可以。 - Greg Charles
这可能还不够。你应该链接、安装gem、rdoc以及一系列随ruby1.9附带的文件。保持系统干净的最佳解决方案是使用RVM。可以使用系统或甚至macports ruby进行编译,例如vim支持ruby。 - patm

2

卸载Ruby版本1.8:
sudo port uninstall ruby
安装Ruby版本1.9:
sudo port install ruby19
重新打开终端


不确定需要重新打开终端。 - Valeriy Van

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