Bundler将Git依赖项安装到错误的目录

时间:2015-02-03 10:26:32

标签: ruby gem rubygems rvm bundler

我在使用Bundler安装Git依赖项时遇到问题。 bundle install似乎成功完成:

Using gemname version from git://github.com/username/repo.git (at master)
Your bundle is complete!

但是,运行任何后续命令bundle exec等都会失败:

git://github.com/username/repo.git (at master) is not yet checked out. Run `bundle install` first.

我注意到Bundler在获取gem时没有问题,但它被安装到本地/home/rails/.bundler/ruby/2.1.0/目录中(以及为什么“Ruby 2.1.0”我不知道......)而不是它应该在/usr/local/rvm/gems/ruby-2.1.3/和所有其他宝石一起。

我已经尝试清除本地Bundler缓存和配置并再次运行bundle install,以防出现一个简单的问题,但这没有帮助。

Gem env:

- RUBYGEMS VERSION: 2.2.2
- RUBY VERSION: 2.1.3 (2014-09-19 patchlevel 242) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.1.3
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.1.3/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.1.3/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-linux
- GEM PATHS:
   - /usr/local/rvm/gems/ruby-2.1.3
   - /usr/local/rvm/gems/ruby-2.1.3@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :backtrace => false
   - :bulk_threshold => 1000
- REMOTE SOURCES:
   - https://rubygems.org/

1 个答案:

答案 0 :(得分:0)

不要运行sudo bundle install - 这会导致git gems被安装到错误的位置。

当作为无法写入普通gem安装位置(GEM_HOME)的用户运行时,Bundler期望在$HOME/.bundler中找到git gem。使用sudo进行安装会绕过此行为(因为您可以以root身份写入任何位置),并且还要求您以root身份bundle exec

相反,在没有sudo的情况下运行bundle install,与运行bundle exec的用户相同。

如果需要root权限来安装其他gem,Bundler会在内部调用sudo。有关详细信息,请参阅http://bundler.io/man/bundle-install.1.html#SUDO-USAGE

使用--deployment标志可以避免此问题,因为在部署模式下,所有gem(git-sourced和其他)都安装在项目的vendor/bundle目录中。