当我在osx El Capitan上执行时:
sudo gem update --system
我收到了错误:
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
答案 0 :(得分:79)
答案 1 :(得分:34)
如果您在通过Homebrew安装ruby之后遇到安装特定gem的问题(如上所述),请尝试以下操作:
sudo gem install -n /usr/local/bin GEM_NAME_HERE
感谢用户对这个问题线程的内质问题:https://github.com/sass/sass/issues/1768
答案 2 :(得分:18)
从El Capitan开始,Apple出于安全原因阻止用户应用程序修改/usr/bin
。所以只需在推荐的文件夹/usr/local/bin
中安装/更新rubygems:
sudo gem update -n /usr/local/bin --system
答案 3 :(得分:14)
这是一个问题' (Apple称之为功能)10.11。基本上,您无法修改10.11中的/usr/bin
(甚至不是root(sudo su -
),还有许多无法修改的其他文件夹)。
如果您运行ls -l /usr/bin
,您会发现权限为555
或r-xr-xr-x
(无写入权限)。您无法使用chmod
更改这些权限。
此功能名称略有错误:'无根'。 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认为这样做太不安全了...... / p>
答案 4 :(得分:1)
对于仍然遇到此问题的人来说,基本上这是Apple在新OSx中发布的安全升级。它是一个系统完整性保护,基本上是一个“无根”的安全系统。请按照以下步骤禁用:
http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/
注意事项只有了解自己在做什么以及为什么这样做,才能做到这一点!
答案 5 :(得分:0)
通过自制软件升级您的ruby版本。
brew upgrade ruby
如果您无法更新ruby,此链接可以为您提供帮助。
答案 6 :(得分:0)
如果你有多个rubygems安装(比如来自homebrew,rbenv,rvm),要将更新定位到默认的Apple安装的rubygems,你可能需要使用绝对路径/usr/bin/gem
来确保更新这个特定的rubygems :
# Note the absolute path to /usr/bin/gem:
sudo /usr/bin/gem update -n /usr/local/bin --system
答案 7 :(得分:-1)
我尝试卸载并重新安装cocoapods时遇到此问题。搜索之后,我发现解决方案是暂时禁用系统完整性保护,然后在完成工作时重新启用系统完整性保护。
以下是步骤。
1)重新启动MAC并按住Command + R,直到看到恢复模式屏幕启动。
2)在此恢复模式下,查看顶部文件菜单' Utility'并选择终端以打开终端
3)在
下输入此命令System.Data.DataSetExtensions
您的Mac现在将重新启动,一旦重启到正常屏幕,您可以通过再次打开终端来检查以确保您已禁用系统完整性保护并输入以下代码
csrutil disable / reboot
现在你可以执行你想要执行的任务。
4)重新启用系统完整性保护 完成工作后,强烈建议您重新启用系统完整性保护
5)再次将Mac重新启动到恢复模式。 (按住Command + R键)
6)当您处于恢复模式屏幕时打开终端
7)输入以下代码
csrutil status
同样,为确保您重新启用系统完整性保护,请在重新启动后使用终端进行检查
csrutil enable /reboot
希望这有助于任何有同样问题的人。