2013-07-30 16 views
11

ich bundler Juwel auf meinem neuen Server installiert haben und wenn ich versuche, bundle install auszuführen, ist es mit diesem Fehler fehlgeschlagen:`Bündel install` konnte aufgrund Erlaubnis verweigert

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) 

Mein Server ist ein Debian sid (7.1) mit Standard-Ruby 1.9.3-Paket installiert. Ich habe /etc/gemrc wie folgt konfiguriert: gem: --user-install, um Benutzern zu erlauben, Edelsteine ​​lokal zu installieren.

Der Bundler Gem wurde in meinem Benutzer Gems Verzeichnis ~/.gem wie ich will mit diesem Befehl installiert: gem install bundler (no sudo). Aber wollen bundler Edelsteine ​​in /var/lib/gems installieren, anstatt meine Edelsteinen Verzeichnis :(

Ich verstehe nicht, was mit bundler falsch ... Warum es nicht gem installiert nicht versuchen, wo ich (in meinem gems lokal dir) will?

ps: in meinem Laptop, mit archlinux und Standard Rubin 2.0.0-Paket installiert ist, habe ich keine Probleme mit bundler gems des Benutzers zu installieren

+0

Verwenden Sie einen Ruby-Versionsmanager? –

+0

nein ... Ich habe es mit rbenv mit dem gleichen Ergebnis versucht und ich habe es entfernt. – JoJoS

Antwort

18

Ich habe gefunden!

Ich hatte meine Rubygem so aktualisiert gem update --system. Aber nur meine lokalen Edelsteine ​​wurden aufgrund der gem: --user-install Einschränkung in meinem /etc/.gemrc aktualisiert. Wenn Bundler funktioniert, verwendet es den globalen Rubygem und nicht meinen.

Um dieses Problem zu beheben, aktualisierte ich die globalen Rubygems mit: sudo gem update --system --no-user-install.

Und alles funktioniert gut!

+0

Danke! Das hilft wirklich! – Yuanhang

6

bundle install nicht die gemrc Einstellungen verwenden (Obwohl possibly that has changed kürzlich in einem Update.. , aber das Update scheint nur ~/.gemrc zu laden, nicht/etc/gemrc)

Sie können tun, was Sie wollen mit bundle install --path ~/.gem

Allerdings würde ich sehr empfehlen, rbenv oder RVM arbeiten. Du hast gesagt, du hättest das gleiche Ergebnis mit rbenv. Wenn deine Edelsteine ​​bei der Installation von rbenv in installieren wollten, war es kein Ruby, auf dem rbenv installiert war. Entweder hat rbenv immer noch das System Ruby benutzt (was es tun wird, bis du einen Ruby von Ruby als Standard gewählt hast) oder du hast rbenv nicht richtig laufen lassen.

+1

Sie haben Recht! Bundler funktioniert gut mit einem gut konfigurierten Rbenv. Mein Problem scheint wegen meinem '~/.profile', der schlecht geladen wird, wenn ich mich anmelde. Ich muss es explizit mit' source ~/.profile' laden. Ich werde rbenv in '.bashrc' verschieben. Vielen Dank !!! ;) – JoJoS

5

Gemäß bundler documentation kann eine $BUNDLE_PATH oder $GEM_HOME env-Variable festgelegt werden, um es zum schreibbaren Standardbereich zu machen.

export BUNDLE_PATH=~/.gems 

bundle install 

Es ist ziemlich praktisch, wenn Sie {root access} nicht verwenden wollen/wollen.

+0

wo hast du das in der Bundler-Dokumentation gefunden? – Bernhard

Verwandte Themen