由于权限被拒绝,`bundle install`失败了

JoJ*_*JoS 16 ruby permission-denied bundler

我在我的新服务器上安装了bundler gem,当我尝试执行时bundle 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)
Run Code Online (Sandbox Code Playgroud)

我的服务器是Debian wheezy(7.1),安装了默认的ruby 1.9.3软件包.我这样配置/etc/gemrc :gem: --user-install允许用户在本地安装gem.

bundler gem安装在我的用户的gems目录中,~/.gem就像我想要的命令:( gem install bundler没有sudo).但捆绑者希望安装宝石/var/lib/gems而不是我的宝石目录:(

我不明白Bundler有什么问题...为什么它不尝试在我想要的地方安装gem(在我的gems local dir中)?

ps:在我的笔记本电脑中,安装了archlinux和默认的ruby 2.0.0软件包,我没有使用bundler来安装用户的宝石.

JoJ*_*JoS 24

我发现 !

我已经像这样更新了我的rubygem gem update --system.但由于gem: --user-install我的限制,只有我的本地宝石更新了/etc/.gemrc.当捆绑器工作时,它使用全局rubygem而不是我的.

为了解决这个问题,我用以下内容更新了全局rubygems : sudo gem update --system --no-user-install.

一切正常!


Leg*_*ion 9

bundle install不使用gemrc设置.(虽然可能在最近的更新中发生了变化,但更新似乎只加载〜/ .gemrc,而不是/ etc/gemrc)

你可以做你想做的事 bundle install --path ~/.gem

但是,我强烈建议让rbenv或RVM正常工作.你说你和rbenv有"相同的结果".如果您的gems在安装/var/lib/gemsrbenv时尝试安装,那么它不是运行该命令的rbenv安装的Ruby.rbenv仍然使用系统Ruby(直到你选择rbenv安装Ruby成为默认值),或者你没有正确运行rbenv.


Onc*_*Tom 9

根据bundler文档,可以设置a $BUNDLE_PATH$GEM_HOMEenv变量使其成为默认的可写入位置.

export BUNDLE_PATH=~/.gems

bundle install
Run Code Online (Sandbox Code Playgroud)

如果您{没有/不想使用} root访问权限,这非常方便.