捆绑器将 Git 依赖项安装到错误的目录



我在使用 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"我不知道......),而不是它应该与所有其他 gem 一起/usr/local/rvm/gems/ruby-2.1.3/的位置。

我尝试清除本地捆绑器缓存和配置并再次运行bundle install以防那里有一个简单的问题,但这没有帮助。

宝石环境:

- 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/

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

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

而是在没有 sudo 的情况下运行bundle install,作为将运行bundle exec的同一用户。

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

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

相关内容

最新更新