gem安装权限问题


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

目前的登录用户是qichunren,并且qichunre用户具有.gem dir的写许可权。我想知道为什么gem首先不将文件安装到我的home .gem dir中?为什么我的gem common首先要将文件安装到/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

Answers:


52

对于系统范围的Ruby安装,请成为root用户。例如:

$ sudo gem install hpricot

但是,在许多情况下(包括在开发中),现代方法是使用一种工具,该工具可让您轻松地将Ruby作为普通用户安装和使用。这样可以避免成为root用户。有一些这样的工具,我使用的是RVM

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

40
不要使用sudo,因为您将以root用户身份安装它们,并且在使用普通用户时无权访问它们。使用RVM和gemset。
瑞安

4
例如rvm gem install hpricot
AJP 2012年

4
您可能要删除此答案。您将保留要点,并为人们省去很多麻烦。
Olhovsky

172

尝试设置GEM_HOMEGEM_PATH~/.gem

对于当前的终端会话,只需键入:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

如果希望在打开终端时进行设置,请将上述命令添加到~/.bashrc文件中。

有关设置自定义红宝石环境的更全面的解决方案,请参阅Site5KB中的本教程,其中介绍了如何使用.gemrc文件。


11
这是实际的正确答案。如果没有必要,不要挥霍sudo安装东西。
杰西·奥布莱恩

答案中的链接似乎已更改。不过,本指南的第一步对我来说完成了同样的事情:kb.site5.com/ruby-on-rails/…–
Mike S

@MikeSlutsky感谢您指出这一点。将来,如果您发现断开的链接(或已更改但不再相关的链接),如果您认为自己有不错的替代品,请随时提交“编辑”建议。
meagar

@meagar我更新了@ Mike-Slutsky给出的链接,但注意到它是有关.gemrc配置的文档。对于红宝石宝石新手而言,当我理解您的解决方案是我添加的更简单的解决方案时,这是令人生畏的。该解决方案适用于我,但作为红宝石新手,请确认我所做的更改符合您的意图。
David LeBauer

1
请记住将您的GEM_PATH添加到全局PATH。这是我做的:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone

8

我通过1and1托管在共享服务器上收到此错误。我的解决方案是添加该--user-install选项,该选项只是为您的登录用户(在共享服务器环境中所需的全部)安装该选项;安装萨斯

gem install sass --user-install

有趣的是,尽管我指定,但仍收到此错误--user-install
sschuberth

4

如果您正在使用rbenv且正在发生这种情况,则需要在.bash_profile中添加以下内容:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.