提问者:小点点

Ruby on Mac OSX Sierra通过Mac Ports


我在macOS Sierra上。我通过macport安装了ruby 2.5(/select/local/bin/ruby2.5)。然而,我也有ruby 2.0在 /usr/bin/ruby——不知道它来自哪里——它不是macport软件包。我如何让我的系统在系统范围内使用较新的ruby 2.5?当我尝试删除/重命名 /usr/bin/ruby我得到“不允许操作”,即使是超级用户。


共1个答案

匿名用户

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

相反,更喜欢特定版本的自安装工具的一般方法是设置$PATH,以便您控制的文件夹位于/usr/bin之前。MacPorts已经通过在/select/local/bin之前添加前缀来做到这一点。但是,默认情况下,MacPorts不会创建/select/local/bin/ruby-

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

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