安装gem或更新RubyGems失败并出现权限错误

尝试安装gem( gem install mygem )或更新RubyGems( gem update --system )失败并出现此错误:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

任何人有想法如何解决这个问题?


您没有写入/Library/Ruby/Gems/1.8目录的权限。

这意味着,你没有写入权限。

这是Apple安装的Ruby版本,供他们自己使用。 虽然如果你知道自己在做什么,可以稍作修改,因为你对权限问题并不确定,但我认为继续沿着这条轨道不是一个好主意。

相反,我强烈建议您考虑使用rbenv或RVM来管理安装到主目录沙箱中的单独Ruby,以便您可以修改/折叠/主轴/更改,而不用担心搞乱Ruby系统。

在这两者之间,我使用rbenv,尽管过去我使用了很多RVM。 rbenv采取更“放手”的方式来管理您的Ruby安装。 RVM具有许多功能,功能非常强大,但结果更具侵入性。 无论哪种情况,在开始安装之前,请仔细阅读安装文档。


尝试添加--user-install而不是使用sudo

gem install mygem --user-install

你真的应该使用Ruby版本管理器。

正确使用它会在执行gem update命令时阻止并解决您的权限问题。

我推荐rbenv。

但是,即使您使用Ruby版本管理器,您仍可能会收到相同的错误消息。

如果你这样做,并且你正在使用rbenv,只需确认~/.rbenv/shims目录位于系统Ruby的路径之前。

$ echo $PATH将显示您的加载路径的顺序。

如果您发现您的shims目录export PATH=$HOME/.rbenv/shims:$PATH系统的Ruby bin目录之后,那么编辑~/.bashrc文件并将其作为最后一个导出PATH命令: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v显示你正在使用的Ruby的版本

这表明我目前正在使用Ruby的系统版本(通常不好)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448将我切换到更新的预装版本(请参阅下面的参考资料)。

这表明我正在使用更新版本的Ruby(可能不会导致Gem :: FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

你通常不需要在sudo前加上gem命令。 如果您觉得有必要这样做,可能是配置错误。

有关rbenv的详细信息,请参阅以下内容:

  • https://github.com/sstephenson/rbenv
  • http://robots.thoughtbot.com/post/47273164981/using-rbenv-to-manage-rubies-and-gems
  • 链接地址: http://www.djcxy.com/p/35929.html

    上一篇: Installing gem or updating RubyGems fails with permissions error

    下一篇: Can Bundler be configured to install gems rdoc?