Ruby on Mac OSX Sierra通过Mac端口

时间:2018-04-23 18:43:09

标签: ruby macos macports

我在macOS Sierra上。我通过macports安装了ruby 2.5(/opt/local/bin/ruby2.5)。但是,我还有/ usr / bin / ruby​​中的ruby 2.0 - 不确定它来自哪里 - 它不是一个macports包。如何让我的系统使用更新的ruby 2.5系统? 当我尝试删除/重命名/ usr / bin / ruby​​时,我甚至以超级用户的身份获得“不允许操作”。

1 个答案:

答案 0 :(得分:1)

/usr/bin是Apple-land。您不应该更改它,并且Apple已经实现了一个名为“系统完整性保护”(SIP)的功能,该功能可以主动阻止在启用此保护的情况下修改文件,其中一个是/usr/bin/ruby。有一些方法可以禁用SIP,但有更好的替代方法可以更改默认的ruby。

相反,偏好特定版本的自安装工具的一般方法是设置$PATH,以便您控制下的文件夹位于/usr/bin之前。 MacPorts已经通过预先/opt/local/bin来实现这一点。但是,默认情况下,MacPorts不会创建/opt/local/bin/ruby -> ruby2.5符号链接,因为您可能安装了多个版本的Ruby,并且不知道您要将哪个版本设为默认值。

出于这个原因,MacPorts附带了一个名为port select的机制(请参阅port help select),它允许您管理/opt/local/bin/ruby符号链接。在您的情况下,port select --list ruby应显示选项列表,sudo port select --set ruby ruby25应使ruby2.5成为默认值。请注意,Shell通常会将查找从命令名称缓存到提供它的路径,因此只有在打开新shell或在当前运行hash -r之后才会生效。

在Ruby的特定情况下,还有一些工具可用于并行管理不同版本的Ruby,例如rbenv和rvm。