2010-04-12 94 views
60
[email protected]:~> 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中?为什么我的宝石常见首先要文件安装到/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8宝石安装权限问题

回答

33

对于全系统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 
+36

不要使用sudo,因为您将以root身份安装它们,并且在使用普通用户时无法访问它们。使用RVM和gemsets。 – rxgx 2011-04-08 07:44:02

+4

例如'rvm gem install hpricot' – AJP 2012-08-05 23:17:30

+1

$ \ curl -L https://get.rvm.io – 2013-04-18 11:35:43

124

尝试设置GEM_HOMEGEM_PATH~/.gem

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

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

如果你想,只要你打开一个终端,加上上面的命令,你~/.bashrc这些文件进行设置。

有关设置自定义ruby环境的更全面的解决方案,请参阅this tutorial from Site5KB,其中描述了使用.gemrc文件。

+1

更安全!谢谢! – Munhitsu 2012-04-30 22:02:37

+6

这是实际的正确答案。如果你不需要,不要使用sudo安装东西。 – 2013-06-08 13:23:23

+0

答案中的链接似乎已经改变。从这个指南的第一步完成了同样的事情,虽然:http://kb.site5.com/ruby-on-rails/how-to-setup-a-custom-rubygems-environment – 2014-01-28 20:43:07

2

如果您使用rbenv和发生这种情况,你需要添加以下到你的.bash_profile:

export RBENV_ROOT="$HOME/.rbenv" 

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

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

gem install sass --user-install