【问题标题】:Operation not permitted - /usr/bin/update_rubygems不允许操作 - /usr/bin/update_rubygems
【发布时间】:2016-01-06 01:56:10
【问题描述】:

当我在 osx El Capitan 上执行时:

sudo gem update --system  

我得到了错误:

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

【问题讨论】:

  • 升级到 El Capitan 后我遇到了同样的问题:/
  • 旧线程,但我不想通过安装 Homebrew 来采用“解决方法”。通过将其添加到您的本地用户,它消除了对 sudo 的需要,并解决了权限问题:stackoverflow.com/a/32253142/731782
  • sudo gem update -n /usr/local/bin --system
  • 这对我有用
  • 我需要使用绝对路径 /usr/bin/gem 来确保更新 Apple 安装的 ruby​​gems。运行sudo /usr/bin/gem update -n /usr/local/bin --system。见答案stackoverflow.com/a/46662080/67834

标签: rubygems


【解决方案1】:

如果您有多个 ruby​​gems 安装(例如来自 homebrew、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

【讨论】:

    【解决方案2】:

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

    1. 通过自制软件升级您的 ruby​​ 版本。

      brew upgrade ruby

    2. 如果您无法更新 ruby​​,此链接可以帮助您。

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        这里是步骤。

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

        2) 在此恢复模式下,查看顶部文件菜单“实用程序”并选择终端以打开终端

        3) 在下方输入此命令

        csrutil disable / reboot
        

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

        csrutil status
        

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

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

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

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

        7) 输入以下代码

        csrutil enable /reboot
        

        再次,为确保您已重新启用系统完整性保护,重启后,使用终端检查使用

        csrutil status.
        

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

        【讨论】:

          【解决方案5】:

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

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

          注意只有在您了解自己在做什么以及为什么要这样做的情况下才应该这样做!

          【讨论】:

            【解决方案6】:

            这是 10.11 的一个“问题”(Apple 称之为功能)。基本上,您无法在 10.11 中修改 /usr/bin(即使是 root (sudo su -),还有许多其他文件夹也无法修改)。

            如果您运行ls -l /usr/bin,您会注意到权限为555,或r-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
            

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

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

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

            【讨论】:

              【解决方案7】:

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

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

              感谢用户 endoplasmic 在此问题线程:https://github.com/sass/sass/issues/1768

              【讨论】:

              • 这也适用于我安装jsduck。虽然我不知道为什么
              • 这甚至适用于原生 Ruby 安装。干得好。
              • 有没有办法让它成为 gems 的默认路径,这样我每次想要安装/更新任何 gems 时都不必输入-n /usr/local/bin
              • @MatthewDavis 您可以通过echo "gem: -n/usr/local/bin" >> ~/.gemrc永久更改默认路径
              【解决方案8】:

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

              http://brew.sh

              然后执行

              brew install ruby
              

              之后它完美地工作了。它与原生 ruby​​ 安装有关。

              【讨论】:

              • 嗨 MarcDK,你能解释一下这实际上是做什么的吗?我和yongfong zhang有同样的问题。如果我们尝试您的解决方案,从那时起 sudo gem update --system 命令会起作用吗?
              • 这对我有用,但我不认为它是“正确”的解决方案,只是一种解决方法。还是谢谢。
              • 有同样的问题,做了这个,它的工作。不知道为什么我的 gem 停止工作,可能是因为我有一台新电脑
              • 必须先修复权限_在此找到说明digitizor.com/fix-homebrew-permissions-osx-el-capitan 之后,它起作用了。
              • 它在 macOS 10.12 (Sierra) 中给出以下错误警告:您使用的是 OS X 10.12。我们不为此预发布版本提供支持。您可能会遇到构建失败或其他损坏。
              猜你喜欢
              • 2017-06-27
              • 1970-01-01
              • 2017-09-21
              • 2012-04-14
              • 1970-01-01
              • 2022-01-04
              • 2015-12-30
              • 2018-10-26
              • 1970-01-01
              相关资源
              最近更新 更多