我正在执行以下脚本:
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
添加到我的路径中,因此我可以安装宝石。
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
显示已安装的宝石。我执行时也可以找到包:
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)
根据帖子中提到的描述,在运行下面提到的命令之前:
bundle install
在脚本中,您需要运行以下命令:
gem install bundler
因此,要运行的命令序列是:
gem install bundler
bundle install
如果if不起作用,请更新bundler命令:
gem install bundler -v '1.17.3'
Bundler 2.0中功能中断的原因在下面提到的链接中给出:
https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html
Bundler版本2引入了一项新功能,可自动使用项目的Gemfile.lock
中指定的Bundler版本。因此,如果你有一个现有的Gemfile.lock
,底部有这样的一行
BUNDLED WITH
1.17.3
Bundler将尝试使用Bundler版本<2.0运行。由于您只安装了Bundler 2.0.1(和Rubygems> = 2.7.0),因此失败时会出现这个相当无用的错误消息。
要解决这个问题,你可以
Gemfile.lock
删除行,并从现在开始使用bundler 2.x,或者gem install bundler -v '< 2.0'
的bundler 1.x版本,以使用Gemfile.lock
指定的相应版本。有关这方面的更多信息,请访问Bundler blog。
我甚至不能做bundle -v
。这把它整理出来:
gem update --system
从这里得到的信息(类似的问题):find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
ruby + gem + bundler之间可能存在一些版本不匹配
gem install bundler -v '< 2.0'
我最近遇到了同样的问题。在我的情况下,我在Bundler上安装了一个与Gemfile.lock中记录的版本不同的版本。请检查
我今天刚遇到同样的错误。我之前在我的系统中安装的捆绑器版本是:1.16.6
按照How to Upgrade to Bundler 2官方捆绑文档中的说明进行操作,以下两个步骤完成了诀窍:
gem install bundler
(帮助您获得最新版本的bundler,截至今天为2.0.2)bundle update --bundler
我遇到了同样的问题。问题是由于RubyGems无法在系统上找到bundler gem的可执行包
要解决它,首先运行
gem install bundler
如果您没有在本地安装bundler gem,则运行
gem update --system
就这样
我希望这有帮助