错误:执行 gem 时出错...(Errno :: EPERM)操作不允许

153

我刚刚将我的Mac系统更新到了OSX 10.11 El Capitan,但有些Ruby宝石未能保留。

问题出现在我尝试安装不同Ruby宝石时...例如:

> sudo gem install compass

一旦我执行,就会出现错误:

> ERROR:  While executing gem ... (Errno::EPERM) Operation not permitted

其他宝石也会发生这种情况...

我已经运行了Homebrew并尝试重新安装Ruby,但什么都不起作用。


1
在终端中输入以下命令:sudo gem install -n /usr/local/bin cocoapods - Swati Gupta
4
将安装Gems的默认路径更改为 echo "gem: -n/usr/local/bin" >> ~/.gemrc - Abdellah Stands with Palestine
2个回答

447

我在SASS的问题页面找到了答案:https://github.com/sass/sass/issues/1768

自从 OSX el Capitan 后,有一个新的安全功能称为“Rootless”,防止您修改系统文件。所以您有两个选择:

  • 如果您将gems安装在 /usr/local/bin 上,就不会有问题,因为rootless不会影响这个路径。

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


2
继Roy所说的,这里是关于homebrew文档的链接,可以解决这个问题,而这里则是Reddit上详细介绍正确升级的链接;也许你可以尝试一下那里的方法是否有帮助。 - take
1
“在重启后禁用无根功能并安装宝石”对我没有起作用。然而,“sudo gem install -n /usr/local/bin GEM_NAME_HERE”解决了我的问题。谢谢。 - Nitesh Borad
2
这个解决方案 sudo gem install -n /usr/local/bin GEM_NAME_HERE 对我来说非常完美(OS X 10.11.1)。使用这个命令再次安装sass和compass非常容易。 顺便说一下,这似乎是最突出的解决方案。 例如,在这里找到:https://github.com/sass/sass/issues/1768并且在现有问题中也可以找到:https://dev59.com/p1wY5IYBdhLWcg3w_cFH - Herr_Hansen
1
一次成功了,谢谢。 - Anshul
1
不需要sudo权限:gem install --user-install GEM。Pod将被安装到~/.gem/目录下。 - Pavel Shorokhov
显示剩余8条评论

11
您遇到这个问题是因为有一个称为 System Integrity Protection 的新安全功能。
您可以按照以下步骤禁用 SIP:
  1. 重新启动电脑进入恢复模式,方法是重启电脑并按住 Command+R 直到屏幕上出现苹果标志。
  2. 点击实用工具 > 终端。
  3. 在终端窗口中输入 csrutil disable 并按 Enter 键。
  4. 重新启动 Mac 电脑。

1
没错,Abid。谢谢。不过,在我看来,另一个解决方案更容易。 - Roy Calderon
/usr/local/bin 安装 gem 是一个不错的解决方案,考虑到 "Roorless"。但我并不确定,在执行来自 /usr/lib/... 文件夹中的操作时,您可能会遇到问题。例如,MySQL 可能会与 libmysqlclient.18.dylib 造成问题。我相信,随着 "Rootless" 引起开发者问题,苹果将提出一些指南或解决方案。 - Abid Ur Rehman
对我来说,将“rootless=0”添加为引导参数没有起作用,但使用csrutil可以。谢谢! - Endareth
17
禁用rootless是一个不好的想法。除非你有充分的理由,否则不要这么做。需要安装gem不是一个好理由。 - tbodt
是的,它运行良好。谢谢你,兄弟。 - Ios App developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接