2013-07-30 86 views
11

我已經安裝了捆綁寶石我的新的服務器上,當我嘗試執行bundle install,它與此錯誤失敗:`束install`失敗,由於許可被拒絕

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) 

我的服務器是一個Debian喘息( 7.1),默認安裝ruby 1.9.3包。我已經配置/etc/gemrc像這樣:gem: --user-install允許用戶在本地安裝gems。

捆綁軟件gem安裝在我的用戶的寶石目錄裏面,就像我想要的這個命令:gem install bundler(no sudo)。但捆綁安裝想寶石到/var/lib/gems而不是我的寶石目錄:(

我不明白這有什麼錯捆綁...爲什麼不嘗試安裝寶石,我想(在我的寶石本地目錄)?

PS:在我的筆記本電腦,用的archlinux和默認紅寶石2.0.0安裝包,我有打捆沒有問題,安裝用戶的寶石

+0

您使用的是Ruby版本管理器嗎? –

+0

不......我用rbenv試過,結果相同,我刪除它。 – JoJoS

回答

18

我找到了!

我已經更新了我的rubygem,像這樣gem update --system。但由於我的/etc/.gemrc中的gem: --user-install限制,只有我的本地寶石更新。當bundler工作時,它使用全局rubygem而不是我的。

爲了解決這個問題,我更新了全球rubygems:sudo gem update --system --no-user-install

而且一切正常!

+0

謝謝!這真的有幫助! – Yuanhang

6

bundle install在最近的更新不使用gemrc設置(雖然possibly that has changed。 ,但更新似乎只加載〜/ .gemrc,而不是/ etc/gemrc)

你可以做什麼你想要bundle install --path ~/.gem

但是,我強烈建議讓rbenv或RVM工作。你說你和rbenv有「同樣的結果」。如果你安裝了rbenv的時候你的gem試圖安裝到/var/lib/gems,那麼它不是安裝rbenv的Ruby,它正在運行該命令。 rbenv仍然使用系統Ruby(直到你選擇rbenv安裝Ruby成爲默認設置),或者你沒有正確運行rbenv。

+1

你說得對! Bundler可以很好地配置好rbenv。我的問題因我的'〜/ .profile'在我登錄時加載非常糟糕。我必須用'source〜/ .profile'明確加載它。我將把rbenv移動到'.bashrc'中。謝謝 !!! ;) – JoJoS

5

根據bundler documentation,可以設置一個$BUNDLE_PATH$GEM_HOME env變量,使其成爲默認的可寫入位置。

export BUNDLE_PATH=~/.gems 

bundle install 

如果您{不需要/不想使用}根訪問權限,這是非常方便的。

+0

你在捆綁器文檔中找到了這個地方? – Bernhard

相關問題