尝试安装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.
任何人都知道如何解决这个问题?
答案 0 :(得分:347)
尝试添加--user-install
,而不是使用sudo
:
gem install mygem --user-install
答案 1 :(得分:296)
您没有/Library/Ruby/Gems/1.8目录的写入权限。
就是说,你没有权限在那里写作。
这是Apple安装的Ruby版本,供自己使用。虽然如果你知道你正在做什么对进行微小的修改是可以的,但是因为你不确定权限问题,我会说继续沿着那条轨道进行不是一个好主意。
相反,我强烈建议您考虑使用rbenv或RVM来管理安装在主目录中的沙箱中的单独Ruby,您可以修改/ fold / spindle /改变而不必担心弄乱系统Ruby。
在两者之间,我使用rbenv,虽然我过去经常使用RVM。 rbenv采用更“不干涉”的方法来管理Ruby安装。 RVM具有很多功能并且功能非常强大,但结果却更具侵入性。在任何一种情况下,阅读他们的安装文档几次,然后开始安装你选择的任何一个。
答案 2 :(得分:87)
你真的应该使用Ruby版本管理器。
正确使用一个可以防止并在执行gem update
命令时解决您的权限问题。
我推荐 rbenv 。
但是,即使您使用Ruby版本管理器,您仍可能会收到相同的错误消息。
如果你这样做,并且你正在使用rbenv,只需验证~/.rbenv/shims
目录是否在系统Ruby的路径之前。
$ echo $PATH
会显示加载路径的顺序。
如果您发现shims目录位于系统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的详细信息,请参阅以下内容:
答案 3 :(得分:76)
你为什么不这样做:
sudo gem update --system
答案 4 :(得分:30)
对我来说,问题是由于使用rbenv
并忘记在全球范围内设置正确的版本。
所以我必须用rbenv global xxx
在我的情况下,我安装了2.0.0-p247
所以我必须发出命令:
rbenv global 2.0.0-p247
rbenv rehash
然后一切正常。
答案 5 :(得分:22)
这将以一种干净的方式解决 MacOs Mojave 上的问题:
brew install ruby
然后将GEM_HOME设置为您的用户目录。在终端上:
Bash
:
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
或如果在Zsh
上:
echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
答案 6 :(得分:22)
您需要更正路径
要确定此修复程序是否有效,请执行以下操作:
which gem
这应输出您没有权限的目录:
/usr/bin/gem
要解决此问题,请执行以下步骤。
确定您需要复制到个人资料的路径:
rbenv init -
输出的第一行是您需要复制到个人资料的行:
export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
rbenv rehash 2>/dev/null
rbenv() {
typeset command
command="$1"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
rehash|shell)
eval `rbenv "sh-$command" "$@"`;;
*)
command rbenv "$command" "$@";;
esac
}
将路径复制到您的个人资料并保存
重新加载您的个人资料(来源〜/ .zshenv给我)
运行rbenv rehash
现在,当您运行which gem
时,您应该获得一个您有权访问的本地路径:
/Users/justin/.rbenv/shims/gem
答案 7 :(得分:17)
sudo gem update --system
sudo gem install (gemfile)
答案 8 :(得分:14)
有两种途径:使用rbenv或RVM。下面有两个食谱。在此之前,您可能想要关闭宝石的本地文档安装。
echo "gem: --no-ri --no-rdoc" >> ~/.gemrc
然后:
运行:
rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system
这将在您的本地目录中安装最新版本的gem系统。这意味着您不会干扰系统配置。如果你问这个问题,你不应该搞乱系统安全性,而且你会花更多的时间来理解你可能遇到的问题,而不仅仅是有一个简单的方法来避免你开始的问题。当您对操作系统和编程有更多了解时,请稍后学习InfoSec。
替代使用'RVM'代替:install rvm运行:
rvm install 2.1.2
rvm use 2.1.2
gem update --system
这具有相同的结果,您最终得到的本地Ruby和Gem系统不会干扰系统版本。不需要Homebrew,或者需要覆盖系统库等。
答案 9 :(得分:13)
我找到this how-to for sudo
less gem:
brew install rbenv ruby-build
sudo gem update --system
将导出添加到.bashrc
:
export RBENV_ROOT="$(brew --prefix rbenv)"
export GEM_HOME="$(brew --prefix)/opt/gems"
export GEM_PATH="$(brew --prefix)/opt/gems"
最后将其添加到您的~/.gemrc
:
gem: -n/usr/local/bin
gem update --system
答案 10 :(得分:13)
在使用下面的原始答案之前尝试nathanwhy's answer。他对--user-install
的建议应该达到同样的目的,而不必篡改你的.bash_profile
或确定你的红宝石版本。
如果您不关心特定的ruby版本,可以跳过heavy-lift ruby environment manager options,只需将这些行添加到~/.bash_profile
:
export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"
路径从gem env
的原始输出中被盗:
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-14
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
- /System/Library/.../usr/lib/ruby/gems/2.0.0
...
不需要sudo
,你可以使用已安装的红宝石,由Apple提供。
答案 11 :(得分:13)
这对我有用。另外,如果您之前以root身份安装了gem,它会通过将所有权更改回给您来解决该问题(更好的安全性)。
sudo chown -R `whoami` /Library/Ruby/Gems
答案 12 :(得分:12)
年龄更大,更聪明
不要做我在这里说的话,只要知道在任何时候使用sudo
都要小心。您可能希望使用rbenv
之类的东西来隔离您正在做的任何工作。
我不知道您是否喜欢命令行,但这将使任何项目都可以轻松安装软件包到您的系统。
据我所知, chown
代表变更所有权。
我之所以寻找这个答案是因为gem install
今天向我提出了这个错误:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /var/lib/gems/1.9.1 directory.
这是使用chown
的绝佳机会。你看到Ruby为我们提供了它需要访问的目录,而且它似乎是一个经常使用的目录。
在这种情况下,解决问题只需要知道三件事,但chown
功能更强大,并且给予你比我现在展示的更多灵活性。有关详细信息,请参阅底部的来源。
如果你在shell中发现用户名很简单。看看提示。我看起来像:
breadly@breadly-desktop:~\Desktop
当前用户只是@
之前的名称。我们知道错误消息中的目录,但您有两个选择。您可以使用../gems/1.9.1
将权限限制为当前版本,也可以使用../gems
为所有版本的宝石授予写入权限。
实际更改所有权的命令将如下所示。
chown -R $(whoami) /absolute/path/to/directory
-R
被称为标志,-R
标志通常告诉命令以递归方式执行某些操作,或者换句话说,对目录中包含的所有内容执行命令,并且包含在其中的目录中包含的内容,依此类推,直到没有其他内容为止。
答案 13 :(得分:12)
我需要做一个rbenv rehash
所以它会指向我当地的Gem图书馆。
看起来你的gem管理器指向系统库,所以,不要乱用权限,而是为你的经理做一个“rehash”,以便让事情指向本地。
答案 14 :(得分:11)
我已将Mac格式化,许多建议的解决方案对我不起作用。 对我来说有用的是这些命令的顺序正确:
安装Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安装Ruby:
brew install ruby
安装指南针:
sudo gem install compass
答案 15 :(得分:5)
为我工作:
sudo gem uninstall cocoapods
sudo gem install cocoapods
答案 16 :(得分:4)
通过brew install rbenv
安装rbenv;
然后将eval "$(rbenv init -)"
放在〜/ .bash_profile(或〜/ .zshrc)的末尾
MacOS);
打开一个新终端并运行gem install ***
即可!
答案 17 :(得分:3)
检查您的Ruby版本是否正确。如果没有,请更改它。
这对我有用:
$ rbenv global 1.9.3-p547
$ gem update --system
答案 18 :(得分:3)
sudo chown -R $USER /Library/Ruby/Gems/
答案 19 :(得分:2)
正如bobbdelsol指出的那样,rehash为我工作:
==> which ruby
/usr/bin/ruby
==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551
==> which ruby
/Users/username/.rbenv/shims/ruby
==> which gem
/Users/username/.rbenv/shims/gem
==> gem install compass
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
==> rbenv global 1.9.3-p551
==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
==> rbenv global 1.9.3-p551
==> rbenv rehash
==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]
==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions. This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
答案 20 :(得分:0)
在MacOS Mojave上成功测试:
卸载所有旧的ruby版本(假设您有2.00和2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
安装全新的红宝石版本:
$ brew install ruby
为您的版本设置默认别名:
$ rvm alias create default ruby
重新启动系统,因为这是计算机加载最近安装的新ruby版本的最安全方法。
完成上述步骤后,即可成功运行任何gem
命令。
答案 21 :(得分:-2)
cd /Library/Ruby/Gems/2.0.0
打开。右键点击获取信息
点击锁定
放置密码
让所有内容都能读写。
答案 22 :(得分:-2)
让用户$ whoami在这些文件夹中创建一个东西
sudo chown -R user /Library/Ruby/Gems/2.0.0
答案 23 :(得分:-3)
您可以使用:gem install cocoapods --pre --user
答案 24 :(得分:-4)
安装gem或更新RubyGems失败并显示权限错误然后键入此命令
sudo gem install cocoapods
答案 25 :(得分:-6)
我用过这个并且工作过。
$ sudo chown myuser /var/lib/gems
答案 26 :(得分:-17)
出错的原因是您没有以终端上的root用户身份登录。
如果您已在终端类型
中的mac上启用root用户$ su
如果您没有root用户,则需要使用以下步骤启用它
http://support.apple.com/kb/ht1528
上有更多内容至少它在卡住几个小时之后对我有用。