不允许操作 – / 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
如果您在通过Homebrew安装ruby后(如上所述)安装特定的gem时遇到问题,请尝试以下操作:
sudo gem install -n /usr/local/bin GEM_NAME_HERE
发现这个感谢用户endoplasmic在这个问题线程: https : //github.com/sass/sass/issues/1768
从El Capitan开始,Apple出于安全原因阻止用户应用程序修改/usr/bin
。 所以只要在推荐文件夹/usr/local/bin
安装/更新rubygems:
sudo gem update -n /usr/local/bin --system
这是10.11的一个“问题”(苹果称之为function)。 基本上,你不能在10.11中修改/usr/bin
(甚至不能以root身份( sudo su -
),还有一些其他文件夹也不能被修改)。
如果你运行ls -l /usr/bin
你会注意到权限是555
,或者r-xr-xr-x
(没有写权限)。 您不能使用chmod
更改这些权限。
这个function名称稍微不正确:“无根”。 苹果表示这是一个安全措施:
https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really
您可以使用此要点恢复该function:
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
PS有些用户说这不起作用,你必须先启动恢复,就像他们在这里:
https://www.macbartender.com/system-item-setup/
我不build议你这样做。 最好的解决办法是只要在Homebrew上安装ruby
(以及其他任何东西),因为你仍然可以对/usr/local
进行写入访问,直到苹果认为它太不安全了。
对于那些仍然存在这个问题的人来说,基本上这是苹果在新的OSx中发布的安全升级。 这是一个基本上是“无根”的安全系统的系统完整性保护。 请执行以下步骤禁用:
http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/
注意这只能做,如果你明白你在做什么,为什么!
我在升级cocopods时也遇到过这个问题,我的操作系统是macOS Sierra,ruby版本是2.0.0。下面的方法解决了我的问题。
-
通过自制软件升级你的ruby版本。
brew upgrade ruby
-
如果你不能更新ruby,这个链接可以帮助你。
如果你有多个rubygems安装(比如homebrew,rbenv,rvm),那么你可能需要使用绝对path/usr/bin/gem
来更新默认的Apple安装的rubygems,以确保更新这个特定的rubygems:
# Note the absolute path to /usr/bin/gem: sudo /usr/bin/gem update -n /usr/local/bin --system
我尝试卸载并重新安装cocoapods时遇到此问题。 search后,我发现解决scheme是临时禁用系统完整性保护,然后重新启用系统完整性保护工作完成。
这是步骤。
1)重新启动您的MAC并按住Command + R,直到您看到恢复模式屏幕启动。
2)在此恢复模式下,查看顶部文件菜单“实用程序”,然后selectterminal打开terminal
3)在下面input这个命令
csrutil disable / reboot
您的Mac将立即重新启动,一旦重新启动到正常屏幕,您可以通过再次打开terminal来检查以确保已禁用系统完整性保护,并input以下代码
csrutil status
现在你可以执行你想要执行的任务了。
4)重新启用系统完整性保护完成工作后,强烈build议您重新启用系统完整性保护
5)重新启动您的Mac到恢复模式了。 (按住Command + R键)
6)当您进入恢复模式屏幕时打开terminal
7)input下面的代码
csrutil enable /reboot
再次,为了确保您重新启用系统完整性保护,重新启动后,使用terminal来检查使用
csrutil status.
希望这有助于任何人有同样的问题。