安装cocoapods时出现错误 Operation not permitted

来源:互联网 发布:黑暗之光魔翼升阶数据 编辑:程序博客网 时间:2024/05/16 11:58

在执行sudo gem install cocoapods 的时候出现了这个问题,解决方法如下:

安装cocoapods时出现错误


ERROR:  While executing gem ... (Errno::EPERM)

    Operation not permitted - /usr/bin/pod


解决办法

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


参考资料:

http://segmentfault.com/q/1010000002926243


治标不治本,下一次还会再出现,永久解决办法:

下载命令行工具: 只要粘贴主页第一行的命令下载就可以了

http://brew.sh

下载过后,运行命令行

brew install ruby

http://stackoverflow.com/questions/33015875/operation-not-permitted-usr-bin-update-rubygems


这个还是和10.11系统后苹果推出的rootless系统完整性保护有关。

苹果已经启用了一个新的默认安全性功能,称为系统完整性保护,通常称为rootless,在Mac OS版本10.11之后。无根的功能旨在防止恶意代码(无论是故意的还是意外的)损害Mac OS X,并且本质上SIP是锁定文件系统中的特定系统级别位置,同时防止某些进程附加到系统级进程。

虽然系统完整性保护安全功能是有效的,绝大多数Mac用户应该无限制地启用,但一些高级Mac用户可能会发现rootless过份保护。因此,如果您处于不支持OS X安装时启用SIP无root用户的高级Mac用户组,我们将向您展示如何关闭此安全功能。


对于那些想知道的问题,系统完整性保护锁定Mac OS X中的以下系统级目录:

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

因此,rootless可能会导致一些应用程序,实用程序和脚本完全不起作用,即使使用sudo privelege,启用了root用户或管理员访问。

在Mac OS X中关闭无根系统完整性保护

再次,绝大多数Mac用户不应该禁用rootless。禁用rootless专门针对高级Mac用户。这样做的风险自负,这并不是特别推荐的。

  1. 重新启动Mac并在听到启动铃声之后同时按住Command + R键,这样可以将OS X引导到恢复模式
  2. 当出现“OS X实用程序”屏幕时,请将屏幕顶部的“实用程序”菜单下拉,然后选择“终端”
  3. 在终端中键入以下命令,然后按返回:

    csrutil disable; reboot

  4. 您将看到一条消息,指出系统完整性保护已被禁用,Mac需要重新启动才能使更改生效,然后Mac将自动重新启动,只需让其正常启动

您也可以自己发出命令,而不需要自动重启,如下所示:

csrutil disable

顺便说一下,如果你有兴趣禁用rootless,那么你也可能希望在你处于命令行的时候关闭Gatekeeper

如果您打算在“终端”或“OS X实用程序”屏幕中执行其他操作,则可能需要在结束时关闭自动重新引导命令,是的,如果您想知道,这是用于重新安装OS X的恢复模式相同与互联网恢复

一旦Mac启动,系统完整性保护将完全禁用在Mac OS X中。

检查Mac OS X中的无根/系统完整性保护状态

如果您想在重新启动之前知道无root的状态,或者不重新启动Mac进入恢复模式,只需在终端中发出以下命令:

csrutil status

您将看到两条消息之一,启用了indi:

$ csrutil status 
系统完整性保护状态:已启用。

要么

$ csrutil status 
系统完整性保护状态:禁用

如果您希望在任何时候更改无root状态,则需要重新启动进入恢复模式。

如何在Mac OS X中重新启用无根系统完整性保护

只需重新启动Mac再次恢复恢复模式如上所述,但在命令行使用以下语法:

csrutil enable

就像以前一样,Mac的重新启动需要更改才能生效。

如前所述,绝大多数Mac用户应该无限制地启用并拥抱系统完整性保护,因为大多数Mac OS X用户在系统级目录中都没有业务。调整此功能真的是针对高级Mac用户,无论是IT,系统管理员,网络管理员,开发人员,修补程序,安全操作以及其他相关高技术领域。



0 0