find_spec_for_exe':找不到gem bundler(> = 0.a)(Gem :: GemNotFoundException)

时间:2017-10-31 00:26:36

标签: ruby rubygems bundle jekyll

我使用了sudo bundle install,这可能是问题的原因?

现在我有:

  • gem -v 2.6.14
  • ruby -v ruby​​ 2.3.5p376(2017-09-14修订版59905)[x86_64-darwin15]
  • jekyll -v jekyll 3.6.2
  • bundle -v Bundler版本1.16.0.pre.3

尝试运行bundle exec jekyll servejekyll serve

时出现以下错误
  
    

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException) from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in activate_bin_path'         来自/Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in <main>' from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in eval'         来自/Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in`   

此外,当访问我的博客文件夹cd my_path时,我收到以下消息:

  

VM使用你的Gemfile来选择Ruby,一切都很好 - Heroku也这样做,   您可以使用'rvm rvmrc warning ignore / Library / WebServer / Documents / blog / Gemfile'忽略这些警告。   要忽略所有文件的警告,请运行'rvm rvmrc warning ignore allGemfiles'。   未知的ruby解释器版本(不知道如何处理):RUBY_VERSION。

我不知道如何解决这个问题。我只想创建我的静态博客,说实话,我不知道Ruby,Gem或Bundle :)所以我会很感激一些见解!

15 个答案:

答案 0 :(得分:300)

我的问题是Gemfile.lock文件的BUNDLED_WITH版本为1.16.1,而gem install bundler的安装版本为2.0.1,因此存在一个版本右移文件夹时不匹配

gem install bundler -v 1.16.1修复了

当然,您也可以按照Sam3000的建议,使用最新的Gemfile.lock版本来更改BUNDLED_WITH的{​​{1}}并使用最新的软件

答案 1 :(得分:102)

gem update --system

将更新rubygems并解决问题。

答案 2 :(得分:38)

我写这篇文章是因为有人遇到像我这样的问题。

gem install bundler表明每个人都安装得很好。

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed

当我输入bundle时出现错误:

/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

在文件夹/Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/中,没有bundler-1.16.0文件夹。

我使用sudo gem install bundler

修复了

更新

根据@noraj的answer和@Niels Kristian的评论,以下命令应该可以胜任。

gem update --system
bundle install

答案 3 :(得分:30)

如果由于捆绑器需要RubyGems v3.0.0而尝试安装捆绑器2.0.1或2.0.0,那么真正的答案就在这里

  

昨天我发布了Bundler 2.0,其中引入了许多重大更改。这些更改之一是将Bundler设置为需要RubyGems v3.0.0。发布之后,很明显,我们的许多用户都遇到了Bundler 2的问题,这些问题需要一个真正新版本的RubyGems。

     

我们一直在认真听取用户的反馈,并决定将RubyGems的要求至少降至v2.5.0。我们发布了新的Bundler版本v2.0.1,该版本可以调整此要求。

有关更多信息,请参见:https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html

答案 4 :(得分:22)

此问题已解决:

  1. 删除Gemfile.lock rm Gemfile.lock
  2. 再次运行bundle install

答案 5 :(得分:16)

原因是您当前的红宝石环境,您使用的捆绑器版本与Gemfile.lock中的版本不同。

  • 安全的方法,在Gemfile.lock中安装具有相同版本的捆绑器,如果发生了某些不可恢复的事情,这不会破坏任何东西。
  • 很难,只需删除Gemfile.lock,然后运行bundle install

答案 6 :(得分:11)

如果您更改了rvm use使用的红宝石版本,请删除Gemfile.lock,然后重试。

答案 7 :(得分:7)

要安装与您的Gemfile.lock匹配的捆绑器,请使用:

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"

答案 8 :(得分:4)

打开Gemfile.lock,该文件位于应用程序文件夹的根目录中。滚动到文件末尾,查看使用的捆绑程序版本。然后,确保安装使用的捆绑软件版本:

gem install bundler -v x.xx.xx

或者-如果安装了更高版本的捆绑程序,则删除Gemfile.lock和捆绑软件。

选择是您的选择,我的朋友。

答案 9 :(得分:1)

就我而言,上述建议对我不起作用。我的情况几乎没有什么不同。

当我尝试使用bundler安装gem install bundler时..但是我得到

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

然后我尝试使用sudo gem install bundler,然后得到

ERROR:  While executing gem ... (Gem::FilePermissionError)
  You don't have write permissions for the /usr/bin directory.

然后我尝试使用sudo gem install bundler -n /usr/local/bin(在我的情况下仅/usr/bin可以完成工作)。

然后成功安装bundler

编辑:我使用MacOS,也许/usr/bin不适用于我(https://stackoverflow.com/a/34989655/3786657评论)

答案 10 :(得分:0)

我的问题是我正在使用RVM并激活了错误的Ruby版本...

希望这可以帮助至少一个人

答案 11 :(得分:0)

除了许多答案之外,我的问题还来自于想要使用docker的ruby作为基础,然后又在顶部使用rbenv的问题。这搞砸了很多事情。

在这种情况下,我通过以下方式修复了该问题:

  • Gemfile.lock版本确实需要更新-暂时将“ BUNDLED WITH”更改为最新版本确实更改了错误消息,因此可能需要
  • 在.bash_profile或.bashrc中,未设置环境变量:
unset GEM_HOME
unset BUNDLE_PATH

在那之后,rbenv运行良好。不知道这些环境变量最初是如何加载的...

答案 12 :(得分:-1)

我今天遇到了同样的问题。我通过移除fmt.Println("\033[2J") PATH中的.bashrc来解决此问题。

答案 13 :(得分:-2)

我不得不做rake clean --force。然后gem install rake等。

答案 14 :(得分:-2)

我将红宝石从2.5.x降级到2.4.x。