安装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的详细信息,请参阅以下内容:
上一篇: Installing gem or updating RubyGems fails with permissions error