2013-07-30 13 views
11

Ho installato bundler gioiello sul mio nuovo server e quando provo ad eseguire bundle install, non è riuscito con questo errore:`install` fascio riuscita a causa di Autorizzazione negata

Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks! 
/usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /var/lib/gems (Errno::EACCES) 

mio server è un ansimante Debian (7.1) con il pacchetto predefinito ruby ​​1.9.3 installato. Ho configurato /etc/gemrc in questo modo: gem: --user-install per consentire agli utenti di installare gemme localmente.

Il gem di bundler è stato installato all'interno della gems dei miei utenti dir ~/.gem come voglio con questo comando: gem install bundler (senza sudo). Ma bundler vuole installare gemme in /var/lib/gems invece mia directory gemme :(

Non capisco cosa c'è di sbagliato con bundler ... Perché non si tenta di installare gioiello dove voglio (nelle mie gemme dir locale)?

ps: nel mio computer portatile, con Archlinux e rubino di default 2.0.0 pacchetto installato, non ho problemi con Bundler per installare gemme dell'utente

+0

Stai utilizzando un gestore di versioni di ruby? –

+0

no ... Ho provato con rbenv con lo stesso risultato e l'ho rimosso. – JoJoS

risposta

18

Ho trovato!

Avevo aggiornato il mio rubygem come questo gem update --system. Ma solo le mie gemme locali sono state aggiornate a causa della restrizione gem: --user-install nel mio /etc/.gemrc. Quando il bundler funziona, usa il rubino globale e non il mio.

Per risolvere questo problema, ho aggiornato i rubygems globali con: sudo gem update --system --no-user-install.

E tutto funziona bene!

+0

Grazie! Questo davvero aiuto! – Yuanhang

6

bundle install non utilizzare le impostazioni gemrc (Anche se possibly that has changed in un recente aggiornamento.. , ma l'aggiornamento sembra caricare solo ~/.gemrc, non/etc/gemrc)

Puoi fare quello che vuoi con bundle install --path ~/.gem

Tuttavia, ti consiglio vivamente di far funzionare rbenv o RVM. Hai detto che avevi lo "stesso risultato" con rbenv. Se i tuoi gems stavano provando ad installare in /var/lib/gems quando hai installato rbenv, allora non era un Ruby installato su rbenv che stava eseguendo quel comando. O rbenv stava ancora usando il sistema Ruby (che funzionerà finché non sceglierai un rbenv che ha installato Ruby per diventare il default), o non hai funzionato correttamente rbenv.

+1

Hai ragione! Bundler funziona bene con un rbenv ben configurato. Il mio problema è dovuto al mio '~/.profile' che è gravemente carico quando eseguo il login. Devo caricarlo esplicitamente con' source ~/.profile'. Sposterò rbenv in '.bashrc'. Grazie !!! ;) – JoJoS

5

Secondo bundler documentation, una variabile di env $BUNDLE_PATH o $GEM_HOME può essere impostata per renderla il posto scrivibile predefinito.

export BUNDLE_PATH=~/.gems 

bundle install 

E 'abbastanza utile se {non hai/non si desidera utilizzare} accesso root.

+0

dove lo hai trovato nella documentazione in bundle? – Bernhard

Problemi correlati