通过Mac端口的Ruby on Mac OSX

通过Mac端口的Ruby on Mac OSX,ruby,macos,macports,Ruby,Macos,Macports,我对Ruby和MacOSX都是新手,不过我对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和MacOSX都是新手,不过我对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的目录的符号链接

我想让Ruby1.9成为我的默认版本(以及像irb这样的相关工具),虽然我可以做到这一点,但我想知道是否有一种传统的方法。我是否应该将MacPorts路径复制或链接到/System/Library/Frameworks/Ruby.framework/Versions/1.9,然后将当前路径指向1.9?(我还需要重命名或复制可执行文件:ruby1.9到ruby,irb1.9到irb,等等),或者我应该去掉/usr/bin/ruby链接(和/usr/bin/irb,等等),创建指向MacPorts版本的新链接吗?

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

我的建议:

$ port uninstall ruby1.9
然后遵循以下步骤:

然后:


您甚至可以
rvm安装macruby
来玩弄Cocoa。

安装
nosuffix
变体:

sudo port install ruby19 +nosuffix

您的较新ruby版本现在应优先于预安装的版本。

二进制文件应安装在
/opt/local/bin
中;如果不是,则可能未激活该端口

使ruby1.9成为默认根目录的最简单方法是为
Ruby
ruby1.9
创建一个别名。如果您使用的是Bash,可以将其放入Bash配置文件中:

alias ruby='/opt/local/bin/ruby1.9'

在最新版本的macports(2.1.3或更高版本)中,您可以使用
端口选择
命令

port select --list ruby
sudo port select --set ruby ruby19
对于较早版本的macports,您可以创建一个符号链接,指向编号为ruby的版本。这是macports通常处理不同版本软件包之间切换的方式

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

您可以在MacPorts 2.1.3下使用简单的端口选择命令

$sudo port select --set ruby ruby19

卸载ruby 1.8版:
sudo端口卸载ruby
安装ruby 1.9版:
sudo端口安装ruby19

在此处重新打开terminal

+1,并检查homebrew以获取其他软件包管理功能,谢谢!Rvm看起来有点像一个承诺,但可能值得付出努力。Rvm有很多选择,但对于初学者来说,你只能通过以下三种方式来实现:
Rvm安装
获取新的ruby,
Rvm使用
切换版本,偶尔
Rvm更新
获取新的东西。当您需要时,您可以在空闲时学习的所有其他内容(例如,多版本测试)。虽然此解决方案工作良好,但它并没有回答TS的问题-“如何使用工具XXX?不要使用XXX”。您不应该删除(或直接触摸)系统的Ruby(或Perl或Python)。保持原样。系统期望它存在,而您无法提前知道有多少(或哪些)事物依赖于它。在这种情况下,
rvm
是管理多个Ruby解释器的极好工具,但总有比“删除默认值”更好的答案。所有rvm建议都是一个很好的例子。具体来说,您需要一个系统ruby,一个适用于任何地方的ruby。您希望/opt/local/bin/ruby成为ruby1.9。现在,unix为此提供了$PATH变量,/usr/bin/${ruby binaries}将不会在假设您正确设置了路径的情况下被查找,您似乎已经设置了路径。RVM是一个很好的工具,除非你想在默认情况下每天都使用ruby我希望能够从XCode执行的makefiles中执行ruby 1.9脚本。RVM将大量内容放入环境变量中。有人知道如何安装1.9并直接使用XCode从makefiles运行它吗?谢谢,这很有帮助。我没有看到这个选项。谢谢你指出这一点。我有/opt/local/bin/ruby1.9。我可能会使用符号链接而不是别名来启用它,但这两种方法都可以,可能还不够。您应该链接、gem、rdoc和ruby1.9附带的一系列文件。保持系统清洁的最佳解决方案是使用RVM。系统的甚至macports ruby都可以用于编译,即支持ruby的vim。这显然是macports现在进行编译的“正确”方式,而不是
+nosuffix
不确定是否有必要重新打开终端。
$sudo port select --set ruby ruby19