21

我已经在我的新服务器上安装了 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)

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

捆绑器 gem 安装在我的用户的 gems 目录~/.gem中,就像我想用这个命令一样:(gem install bundler没有 sudo)。但是捆绑器希望将 gems 安装到/var/lib/gems我的 gems 目录中:(

我不明白捆绑程序有什么问题......为什么它不尝试在我想要的地方安装 gem(在我的 gems 本地目录中)?

ps:在我的笔记本电脑中,安装了 archlinux 和默认的 ruby​​ 2.0.0 包,我使用 bundler 安装用户的 gem 没有问题。

4

3 回答 3

29

我发现 !

我已经像这样更新了我的 ruby​​gem gem update --system。但由于gem: --user-install我的/etc/.gemrc. 当 bundler 工作时,它使用全局 ruby​​gem 而不是我的。

为了解决这个问题,我用 : 更新了全局 ruby​​gems sudo gem update --system --no-user-install

一切正常!

于 2013-08-21T20:32:22.730 回答
14

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

export BUNDLE_PATH=~/.gems

bundle install

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

于 2015-05-05T11:14:11.760 回答
12

bundle install不使用 gemrc 设置。(虽然可能在最近的更新中有所改变,但更新似乎只加载 ~/.gemrc,而不是 /etc/gemrc)

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

但是,我强烈建议让 rbenv 或 RVM 工作。您说您与 rbenv 有“相同的结果”。如果您在安装 rbenv 时尝试安装/var/lib/gemsgem,那么运行该命令的不是安装了 rbenv 的 Ruby。要么 rbenv 仍在使用系统 Ruby(直到你选择一个安装了 rbenv 的 Ruby 成为默认系统),或者你没有正确运行 rbenv。

于 2013-07-31T02:48:04.753 回答