gem安装权限问题

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. 

当前login的用户是qichunren,而qichunre用户有.gem dir的写入权限。我想知道为什么gem没有将文件安装到我的.gem目录中。 为什么我的gem通用首先要将文件安装到/opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

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

 $ sudo gem install hpricot 

然而,在许多情况下(包括开发中),现代的方法是使用一个工具,让您以普通用户的方式轻松安装和使用Ruby。 这可以让你避免成为根。 有一些这样的工具,我使用的是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 

尝试将GEM_HOMEGEM_PATH设置为~/.gem

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

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

如果您希望在打开terminal时设置这些命令,请将上述命令添加到~/.bashrc文件中。

有关设置自定义ruby环境的更全面的解决scheme,请参阅Site5KB中的本教程 , 该教程使用.gemrc文件进行描述。

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

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

我通过1and1托pipe在我的共享服务器上发生了这个错误。 我的解决scheme是添加--user-install选项,它只是安装它为您的login用户(这是共享服务器环境中的所有需要​​)的例子; 安装sass

 gem install sass --user-install