由于权限被拒绝,`bundle install`失败了
我在我的新服务器上安装了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)
我的服务器是Debian wheezy(7.1),安装了默认的ruby 1.9.3软件包。 我已经像这样配置了/etc/gemrc
: gem: --user-install
user gem: --user-install
允许用户在本地安装gem。
bundler gem安装在我的用户的gems dir ~/.gem
就像我想要的命令: gem install bundler
(no sudo)。 但捆绑者希望将gems安装到/var/lib/gems
而不是我的gems目录:(
我不明白Bundler有什么问题…为什么它不尝试在我想要的地方安装gem(在我的gems local dir中)?
ps:在我的笔记本电脑中,安装了archlinux和默认的ruby 2.0.0软件包,捆绑器安装用户的gem没有问题。
我发现 !
我已经更新了我的rubygem,就像这个gem update --system
。 但是由于我的/etc/.gemrc
的gem: --user-install
/etc/.gemrc
gem: --user-install
限制,只有我的本地gem更新了。 当捆绑器工作时,它使用全局rubygem而不是我的。
为了解决这个问题,我使用以下sudo gem update --system --no-user-install
更新了全局rubygems: sudo gem update --system --no-user-install
。
一切正常!
bundle install
不使用gemrc设置。 (虽然可能在最近的更新中发生了变化 ,但更新似乎只加载〜/ .gemrc,而不是/ etc / gemrc)
你可以用bundle install --path ~/.gem
做你想做的bundle install --path ~/.gem
但是,我强烈建议让rbenv或RVM正常工作。 你说你和rbenv有“相同的结果”。 如果您的gems在安装rbenv时尝试安装到/var/lib/gems
,那么它不是运行该命令的rbenv安装的Ruby。 要么rbenv仍然使用系统Ruby(直到你选择rbenv安装Ruby成为默认值),或者你没有正确运行rbenv。
根据bundler文档 ,可以设置$BUNDLE_PATH
或$GEM_HOME
env变量,使其成为默认的可写入位置。
export BUNDLE_PATH=~/.gems bundle install
如果您{没有/不想使用} root访问权限,这非常方便。