2010-04-12 46 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. 

Bieżącym użytkownikiem jest użytkownik qichunren, a użytkownik qichunre ma uprawnienia do zapisu w .gem dir. Chciałbym wiedzieć, dlaczego klej nie instaluje plików w moim katalogu domowym .gem? Dlaczego moja perełka wspólny pierwszy chcesz zainstalować pliki do /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8problem z instalacją gem problem

Odpowiedz

33

Dla systemowej instalacji Ruby, zostań rootem. Na przykład:

$ sudo gem install hpricot 

Jednak nowoczesne podejście w wielu przypadkach, w tym w fazie rozwoju, jest użycie narzędzia, które pozwala łatwo zainstalować i używać Ruby jako zwykły użytkownik. Pozwala to uniknąć konieczności zostania rootem. Jest kilka takich narzędzi, a jedną używam jest 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

Nie używaj sudo, ponieważ zainstalujesz je jako root i nie będziesz mieć do nich dostępu, gdy będziesz używać normalnego użytkownika. Użyj RVM i gemsetów. – rxgx

+4

np. 'rvm gem install hpricot' – AJP

+1

$ \ curl -L https://get.rvm.io –

124

Spróbuj ustawić GEM_HOME i GEM_PATH do ~/.gem,

dla bieżącej sesji terminala, wystarczy wpisać:

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

Jeśli chcesz to być ustawiony w dowolnym momencie otworzyć terminal, dodać powyższe polecenia do pliku ~/.bashrc.

Aby uzyskać bardziej kompleksowe rozwiązanie dotyczące konfigurowania niestandardowego środowiska ruby, zobacz: this tutorial from Site5KB, który opisuje użycie pliku .gemrc.

+1

O wiele bezpieczniejsze! Dzięki! – Munhitsu

+6

To jest właściwa odpowiedź prawidłowa. Nie idź dzierżąc sudo instalując rzeczy, jeśli nie musisz. –

+0

Wygląda na to, że link w odpowiedzi uległ zmianie. Pierwszy krok od tego przewodnika uświadomił mi to samo: http://kb.site5.com/ruby-on-rails/how-to-setup-a-custom-rubygems-environment –

2

Jeśli używasz rbenv i tak się dzieje, należy dodać następujące wpisy do bash_profile:

export RBENV_ROOT="$HOME/.rbenv" 

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

ja otrzymuję ten błąd na moim serwerze udostępnionym przez 1and1 hosting. moim rozwiązaniem było dodanie opcji --user-install, która po prostu instaluje ją dla zalogowanego użytkownika (który jest wszystkim, czego potrzebujesz w środowisku współużytkowanego serwera) przykład; instalacja sass

gem install sass --user-install