2010-04-12 89 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