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