ruby-on-rails - 捆绑器:在使用 gem 进行捆绑安装期间找不到带有可执行捆绑包 (Gem::GemNotFoundException) 的 gem bundler (>= 0.a)
问题描述
我正在执行以下脚本:
gem install rdoc --no-document
gem install bundle
bundle
输出:
+ gem install rdoc --no-document
Successfully installed rdoc-6.1.1
1 gem installed
+ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 2 seconds
1 gem installed
1 gem installed
+ bundle install
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
from /srv/myuser/.gem/ruby/2.5.0/bin/bundle:23:in `<main>'
我已经添加/srv/myuser/.gem/ruby/2.5.0/bin
到我的路径中,所以我能够安装 gems。
gem env
节目_
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.7
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/2.5.0
- USER INSTALLATION DIRECTORY: /srv/myuser/.gem/ruby/2.5.0
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /srv/myuser/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/2.5.0
- /srv/myuser/.gem/ruby/2.5.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--user-install"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/sbin
- /usr/local/bin
- /usr/bin
gem list
显示已安装的 gem。我还可以在执行时找到捆绑包:
ls -ltrah /srv/myuser/.gem/ruby/2.5.0/bin
我也尝试安装捆绑器,但这也无济于事。我究竟做错了什么?
gem which bundle
什么也没显示。gem spec bundle
正在展示它。
更新:我尝试在运行 bundle 之前安装 bundler,但同样的问题出现在:
gem list bundle
节目
bundle (0.0.1)
bundler (2.0.1)
解决方案
Bundler 版本 2 引入了一项新功能,可以自动使用Gemfile.lock
项目中指定的 Bundler 版本。因此,如果您有一个现有Gemfile.lock
的,底部有这样一条线
BUNDLED WITH
1.17.3
Bundler 将尝试以 < 2.0 的 Bundler 版本运行。由于您刚刚安装了 Bundler 2.0.1(和 Rubygems >= 2.7.0),因此失败并显示此相当无用的错误消息。
要解决此问题,您可以
- 从您的 and 中删除这些行
Gemfile.lock
,以便从现在开始在任何地方使用 bundler 2.x,或者 - 安装 bundler 1.x 版本
gem install bundler -v '< 2.0'
以使用您指定的适当版本Gemfile.lock
。
有关这方面的更多信息,请参见Bundler 博客。
推荐阅读
- batch-file - 在没有管理员权限的情况下在特定位置打开 cmd 的 .bat 文件
- php - memcached 不存储具有特定键的复杂项目数组
- python - 如何在python中对维基百科类别进行分组?
- c# - .NET 客户端应用程序连接到 WebSocket 服务器的最佳方式是什么?
- javascript - 优化javascript显示风格
- java - 如何使用 selenium webdriver 使 Google Chrome JavaScript 控制台持久化?
- typescript - 无法设置未定义的属性“文本”
- angularjs - angularjs 定制服务不适用于箭头“=>”功能?
- ios - 未为 iOS 启用 Places API,即使它已启用
- javascript - 反应索引键在地图中不起作用