不允许操作 - /usr/bin/update_rubygems

Operation not permitted - /usr/bin/update_rubygems

当我在 osx El Capitan 上执行时:

sudo gem update --system  

我收到错误:

Updating rubygems-update
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/update_rubygems

最终通过自制软件安装了 ruby。首先安装自制软件:

http://brew.sh

然后执行

brew install ruby

在那之后它完美地工作了。跟原生ruby安装有关系。

这是 10.11 的 'issue'(Apple 称之为功能)。基本上,您不能在 10.11 中修改 /usr/bin(即使是 root (sudo su -),还有许多其他文件夹也 不能 被修改) .

如果您 运行 ls -l /usr/bin,您会注意到权限为 555r-xr-xr-x(无写入权限)。您不能使用 chmod.

更改这些权限

此功能的名称略有错误:'rootless'。 Apple 表示这是一项安全措施:

https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really

您可以使用此要点还原该功能:

https://gist.github.com/djtech42/7233c602fda912d96fdf

#!/bin/bash
#Beta 4 to Final Public Release (Must be run in Recovery Mode)
csrutil disable

#Beta 1-3
sudo nvram boot-args="rootless=0";sudo reboot

P.S。一些用户说这不起作用,您必须先启动恢复,就像他们在这里所做的那样:

https://www.macbartender.com/system-item-setup/

我不建议你这样做。最好的解决方案是通过 Homebrew 安装 ruby(以及几乎所有其他东西),因为您仍然可以对 /usr/local 进行写入访问,直到 Apple 认为这太不安全 ...

如果您在通过 Homebrew 安装 ruby 后遇到特定 gem 的问题(如上所述),请尝试以下操作:

sudo gem install -n /usr/local/bin GEM_NAME_HERE

感谢用户 endoplasmic 在这个问题线程上找到了这个:https://github.com/sass/sass/issues/1768


对于那些仍然有这个问题的人,基本上这是 Apple 在新 OSx 中发布的安全升级。它是一个系统完整性保护,基本上是一个 "rootless" 安全系统。按照以下步骤禁用:

http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/

注意只有当您了解自己在做什么以及为什么这样做时才应该这样做!

当我尝试卸载并重新安装 cocoapods 时确实遇到了这个问题。经过搜索,我发现解决方案是暂时禁用系统完整性保护,然后在工作完成后重新启用系统完整性保护。

步骤如下。

1) 重新启动您的 MAC 并按住 Command+R 直到您看到恢复模式屏幕启动。

2) 在此恢复模式下,查看顶部文件菜单 'Utility' 和 select 终端以打开终端

3) 在下方输入此命令

csrutil disable / reboot

您的Mac现在将重新启动,一旦重新启动到正常屏幕,您可以通过再次打开终端并输入以下代码来检查以确保您已禁用系统完整性保护

csrutil status

现在你可以执行你想执行的任务了。

4) 重新启用系统完整性保护 完成工作后,强烈建议您重新启用系统完整性保护

5) 再次将 Mac 重新启动到恢复模式。 (按住 Command+R 键)

6) 在恢复模式屏幕中打开终端

7) 输入以下代码

csrutil enable /reboot

同样,为确保您已重新启用系统完整性保护,重启后,使用终端进行检查

csrutil status.

希望这对遇到同样问题的人有所帮助。

从 El Capitan 开始,出于安全原因,Apple 禁止用户应用程序修改 /usr/bin。所以只需要在推荐文件夹中 install/update ruby​​gems,/usr/local/bin:

sudo gem update -n /usr/local/bin --system

我在升级cocopods的时候也遇到了这个问题,我的操作系统是macOS Sierra,ruby版本是2.0。0.The下面的方法解决了我的问题。

  1. 通过自制程序升级您的 ruby 版本。

    brew upgrade ruby

  2. 如果更新失败ruby,这个link可以帮到你。

    https://github.com/Homebrew/legacy-homebrew/issues/49895

如果您安装了多个 ruby​​gems(比如来自自制软件、rbenv、rvm),要将更新定位到默认的 Apple 安装的 ruby​​gems,您可能需要使用绝对路径 /usr/bin/gem 来确保这个特定的 ruby​​gems已更新:

# Note the absolute path to /usr/bin/gem:
sudo /usr/bin/gem update -n /usr/local/bin --system