我试图使用gem install mygem或使用gem update——system更新RubyGems安装一个gem,它失败了,错误如下:

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

有人知道怎么解决这个问题吗?


当前回答

安装rbenv;

然后在~/的末尾加上eval "$(rbenv init -)"。Bash_profile(或~/.zshrc MacOS);

打开一个新终端,运行gem install ***将工作!

其他回答

对我来说,问题是由于使用rbenv,忘记全局设置正确的版本。

所以我必须用rbenv global xxx来设置它

在我的情况下,我安装了2.0.0-p247,所以我必须发出命令:

rbenv global 2.0.0-p247
rbenv rehash

然后一切都运转正常。

我对我的Mac进行了格式化,许多建议的解决方案对我不起作用。 对我来说有用的是这些正确顺序的命令:

安装自制程序: /usr/bin/ruby -e "$(curl - ssl https://raw.githubusercontent.com/Homebrew/install/master/install)" 安装Ruby: 编译安装ruby 安装指南: 须藤宝石安装指南针

有两种路由:使用rbenv或RVM。下面是这两种食物的食谱。在此之前,您可能希望关闭gem本地文档的安装。

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

然后:

安装rbenv

安装ruby-build

运行:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

这将在本地目录中安装gem系统的最新版本。这意味着您不会干扰系统配置。如果您正在问这个问题,那么您不应该破坏系统安全性,并且您将花费更长的时间来了解可能遇到的问题,而不仅仅是找到一种简单的方法来避免您开始时遇到的问题。了解更多关于操作系统和编程的知识后,再学习InfoSec。

使用'RVM'替代:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

这有同样的结果,您最终得到的是一个本地Ruby和Gem系统,它不会影响系统版本。不需要Homebrew,也不需要覆盖系统库等等。

您可以更改GEM_HOME。您还在您的主目录下有一个gem文件夹来检查它的使用

$ gem env

结果如下。不相关的部分省略。

...
  - GEM PATHS:
     - /Users/xxx/.gem/ruby/2.6.0
     - /Library/Ruby/Gems/2.6.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
...
 

你可以使用你的/Users/xxx/.gem/ruby/2.6.0文件夹。

vim ~/.bash_profile

添加以下行

export GEM_HOME=~/.gem/ruby/2.6.0/

之后你就可以使用了

source ~/.bash_profile 
sudo gem update --system
sudo gem install (gemfile)