我试图使用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.

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


当前回答

给用户$whoami在这些文件夹中创建一些东西

sudo chown -R user /Library/Ruby/Gems/2.0.0

其他回答

更老更睿智

不要做我在这里说的,只要知道在你使用sudo的任何时候都要小心。您可能希望使用类似rbenv的东西来隔离您正在做的任何工作。


的一种方式

了解chown

我不知道您是否喜欢命令行,但这将使使用任何工具在任何项目中安装包到您的系统变得轻而易举。

据我所知,chown代表着改变所有权。

我来寻找这个答案的原因是因为gem安装今天向我抛出了这个错误:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

这是一个使用口香糖的绝佳机会。你看,Ruby已经给了我们它需要访问的目录,而且它似乎会经常使用这个目录。

在这种情况下,要解决这个问题只需要知道三件事,但是chown要强大得多,并且比我现在要演示的灵活性要大得多。更多信息请参考下面的资料。

两件事

用户名 目录

如果您在shell中查找用户名很容易。看看提示就知道了。我的是这样的:

breadly@breadly-desktop:~\Desktop

当前用户只是@前面的名字。我们从错误消息中知道了目录,但是您有两种选择。您可以使用../gems/1.9.1将权限限制在当前版本,或者使用../gems给自己所有版本的gems写权限。

实际更改所有权的命令如下所示。

chown -R $(whoami) /absolute/path/to/directory

-R被称为一个标志,-R标志通常告诉命令递归地执行某项操作,换句话说,对目录中包含的所有内容执行该命令,以及该目录中包含的所有内容,等等,直到没有其他内容为止。

安装rbenv;

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

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

错误:当执行gem…(Gem:: FilePermissionError) 你没有写/Library/Ruby/Gems/2.6.0的权限

(2022方案) 这里已经添加了问题的详细原因

问题概述->该问题与ruby访问有关,M1 MAC自带ruby。我们没有被允许为我们的目的使用它。相反,我们安装了一个单独的ruby实例,并将其用于我们的目的。

下面的步骤帮助我解决了这个问题,希望这可能会有所帮助

我们不需要用rvn或chruby安装ruby。 我的解决方案使用自制程序来安装ruby。

打开终端 使用自制程序安装ruby

安装ruby

[用于重新安装]brew重装ruby

使用下面的命令检查ruby的路径 这红宝石 它应该安装在下面的路径 /usr/bin/ruby 将ruby路径更改为用户路径

检查您的系统使用了哪个shell

echo $0

-zsh

对于zshrc

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/.zshrc . bin:$PATH

在bash

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/~/.bashrc . bin:$PATH

退出并重新启动终端 用步骤5改变路径后 再次检查ruby的路径(执行步骤3 -请确保路径如下所示)

/usr/local/opt/ruby/bin/ruby

[如果您不退出并启动终端,将显示步骤4路径]

这一步可能并不适用于所有人,如果你安装了正确的Cocoapods版本,可以跳过第10和11步

检查安装的pod的版本

豆荚,版本

使用下面的命令卸载特定版本的Cocoapods

如果安装的版本是1.11.0

卸载cocoapods 1.11.0

安装特定版本的Cocoapods 安装cocoapods 1.11.0 将路径更改为Project目录cd {Project目录的路径} 在项目目录中安装捆绑程序

包安装

执行pod安装

正在安装

您可以更改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 

这将以一种干净的方式修复MacOS Mojave和Catalina的问题:

brew install ruby

然后将GEM_HOME设置为您的用户目录。终端:

Bash: echo '#安装Ruby Gems到~/ Gems ' >> ~/.bashrc echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc . txt 源~ / . bashrc 如果在Zsh上: echo '#安装Ruby Gems到~/ Gems ' >> ~/.zshrc echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc . txt 源~ / . zshrc