2013-07-09 5 views
28

Sto tentando di installare Jekyll. Dopo aver eseguito gem install jekyll ottengo questo errore:Perché ricevo un errore di "autorizzazione negata" durante l'installazione di una gemma?

ERROR: While executing gem ... (Errno::EACCES) 
    Permission denied - /usr/local/lib/ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md 

posso vedere che Jekyll è installato quando corro gem list quindi sono accuratamente confuso:

*** LOCAL GEMS *** 

bigdecimal (1.2.0) 
classifier (1.3.3) 
colorator (0.1) 
commander (4.1.3) 
directory_watcher (1.4.1) 
fast-stemmer (1.0.2) 
highline (1.6.19) 
io-console (0.4.2) 
jekyll (1.0.3) 
json (1.7.7) 
kramdown (1.0.2) 
liquid (2.5.0) 
maruku (0.6.1) 
minitest (4.3.2) 
posix-spawn (0.3.6) 
psych (2.0.0) 
pygments.rb (0.5.1) 
rake (0.9.6) 
rdoc (4.0.0) 
rubygems-update (2.0.3) 
safe_yaml (0.7.1) 
syntax (1.0.0) 
test-unit (2.0.0.0) 
yajl-ruby (1.1.0) 

Ho avuto un sacco di problemi con la mia percorsi utente in passato, quindi mi chiedo se questo errore potrebbe avere qualcosa a che fare con questo?

Ecco l'output di gem env:

RubyGems Environment: 
    - RUBYGEMS VERSION: 2.0.3 
    - RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0] 
    - INSTALLATION DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0 
    - RUBY EXECUTABLE: /usr/local/Cellar/ruby/2.0.0-p0/bin/ruby 
    - EXECUTABLE DIRECTORY: /usr/local/Cellar/ruby/2.0.0-p0/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-12 
    - GEM PATHS: 
    - /usr/local/Cellar/ruby/2.0.0-p0/lib/ruby/gems/2.0.0 
    - /Users/me/.gem/ruby/2.0.0 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - https://rubygems.org/ 

Ecco la mia ".bash_profile":

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH" 

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* 
PATH=$PATH:above/path/to/gems 

source ~/.rvm/scripts/rvm 

Potrebbe qualcuno si prega di aiuto a ottenere installato Jekyll, o almeno superare questo errore di autorizzazioni ?

risposta

43

Il tuo Ruby è installato in /usr/local/Cellar/ruby/....

Questo è un percorso limitato e può essere scritto solo quando si utilizzano privilegi elevati, eseguendo come root o utilizzando sudo. Non ti consiglio di eseguire cose come root dato che non capisci come funzionano i permessi e le tracce. È possibile possibile utilizzare sudo gem install jekyll, che aumenterà temporaneamente le autorizzazioni, dando al comando i diritti necessari per scrivere in tale directory.

Tuttavia, ti consiglio di prendere seriamente in considerazione il fatto di NON farlo, e invece di utilizzare il tuo RVM per installare Ruby nella tua home directory, dove sarai automaticamente in grado di installare Rubini e gemme senza problemi di autorizzazione. Vedere le istruzioni per l'installazione in una sandbox RVM locale in "Single-User installations".

Perché hai RVM nel tuo ~/.bash_profile, ma non compare nel tuo elenco di ambiente Gem, ho il sospetto che tu non abbia seguito le istruzioni per installare correttamente RVM, o non hai usato l'importantissimo comando:

rvm use 2.0.0 --default 

per configurare un Ruby predefinito.

Per la maggior parte degli utenti, "Installazione utente singolo" è la strada da percorrere. Se devi usare sudo con quella configurazione hai fatto qualcosa di sbagliato.

+0

Grazie per averlo reso così chiaro. Sono tornato indietro e ho installato RVM. Tutto funziona perfettamente. – okTalk

+0

Ho trovato la tua spiegazione e soprattutto il tuo paragrafo conclusivo più utile. –

28

ho voluto condividere i passi che ho seguito che ha risolto questo problema per me, nella speranza che possa aiutare qualcun altro (e anche come promemoria per me nel caso che qualcosa di simile accada di nuovo)

i problemi Avrei avuto (che erano gli stessi di OP) potrebbe avere a che fare con l'utilizzo di homebrew per installare Ruby.

Per risolvere questo problema, homebrew prima ho aggiornato:

brew update && brew upgrade 
brew doctor 

(Se brew medico esce con tutti i problemi, fissare loro per primi.) Poi ho disinstallato rubino

brew uninstall ruby 

Se rbenv è NON installato a questo punto, quindi

brew install rbenv 
brew install ruby-build 
echo 'export RBENV_ROOT=/usr/local/var/rbenv' >> ~/.bash_profile 
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile 

Poi ho usato rbenv installare rubino. In primo luogo, trovare la versione desiderata:

rbenv install -l 

Installare quella versione (ad esempio 2.2.2)

rbenv install 2.2.2 

quindi impostare la versione globale alla versione ruby ​​desiderata:

rbenv global 2.2.2 

A questo punto dovresti vedere la versione desiderata impostata per i seguenti comandi:

rbenv versions 

e

ruby --version 

Ora si dovrebbe essere in grado di installare bundler:

gem install bundler 

E una volta nella cartella di progetto desiderato, è possibile installare tutte le gemme necessarie:

bundle 
bundle install 
+0

Quindi ora abbiamo un RVM e una risposta rbenv. Ora ne abbiamo solo bisogno un'altra con [chruby] (https://github.com/postmodern/chruby/blob/master/README.md) che molte persone stanno [cambiando] (https://jesse.codes/blog/rbenv -to-chruby /) a. Per ulteriori informazioni, c'è un episodio [Ruby Rogues] (http://devchat.tv/ruby-rogues/169-rr-version-managers-with-michal-papis-mislav-maronic-and-postmodern-mod-iii) confrontando i gestori di versioni ruby. –

+0

Buon lavoro e grazie. rbenv repo link se qualcuno ne ha bisogno https://github.com/sstephenson/rbenv – jasonleonhard

+0

Qual è il motivo per l'impostazione di 'echo' export RBENV_ROOT =/usr/local/var/rbenv '>> ~/.bash_profile' invece di solo usando default '~/.rbenv'? – tir38

3

Dopo aver impostato la directory gems nella directory utente che esegue gem install utilizzando export GEM_HOME=/home/<user>/gems, il problema è stato risolto.

0

Installare rbenv o rvm come Rubino versione manager (io preferisco rbenv) tramite homebrew (es. brew update & brew install rbenv), ma poi, per esempio, nel caso di rbenv Assicurarsi di aggiungere rbenv al tuo $ PATH come indicato here e here.

Per una spiegazione più approfondita su come funziona rbenv, consiglio this.

3

Ho avuto lo stesso problema utilizzando rvm su Ubuntu, è stato fissato impostando il source sul mio terminale come breve termine soluzione:

source $HOME/.rvm/scripts/rvm

o

source /home/$USER/.rvm/scripts/rvm

e configurare una versione Ruby predefinita, 2.3.3 nel mio caso.

rvm use 2.3.3 --default


E un a lungo termine soluzione è aggiungere la source al file .bashrc a permanentemente rendere Ubuntu guardarsi .rvm per tutti i file di Ruby.

Add:

source .rvm/scripts/rvm

in

$HOME/.bashrc file.