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


217

我用过sudo bundle install,那可能是问题的原因?

我现在有:

  • gem -v 2.6.14
  • ruby -v 红宝石2.3.5p376(2017-09-14修订版59905)[x86_64-darwin15]
  • jekyll -v 杰基尔3.6.2
  • bundle -vBundler版本1.16.0.pre.3

尝试运行时bundle exec jekyll serve或刚出现以下错误jekyll 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'
    from /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'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa

另外,访问我拥有博客的文件夹时,还会cd my_path收到以下消息:

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

我不知道该如何解决。我只想创建我的静态博客,并且老实说我对Ruby,Gem或Bundle不了解:)因此,我希望能获得一些见解!



@Cyzanfar谢谢你!我尝试了一下,现在过程中出现了一个新错误:stackoverflow.com/questions/47035080/…–
Alvaro

Answers:


363

我的问题是该Gemfile.lock文件的BUNDLED_WITH版本为,1.16.1并且gem install bundler已安装version 2.0.1,因此在向右看文件夹时存在版本不匹配的情况

gem install bundler -v 1.16.1 解决它

当然,您也可以使用Sam3000建议的最新版本更改您Gemfile.lockBUNDLED_WITHbundler并使用最新的软件


15
或者,您可能希望将BUNDLED_WITH版本更改为最新版本的捆绑软件。这对我
有用

5
Bundler 2刚刚发布,因此,如果您未在Dockerfile中指定以上内容,您将遇到此错误bundler.io/blog/2019/01/03/announcing-bundler-2.html
cameck

嗨@ antonio-tapiador我遇到了这个问题,但是我在Windows上(无法切换到linux)。我已经跑步 gem install bundler -v 1.16.1,现在如果gem.bat list bundler 我跑步, 我会得到捆绑器(2.0.1、1.16.1、1.9.6)。我无法更改当前版本:执行时出现bundle.bat _1.16.1 install此错误:Could not find command "_1.16.1"。您有什么主意,所以我不必提出新的问题吗?谢谢!
德国人

没关系,我在版本末尾缺少下划线。
德国人

谢谢。这也使用ruby v2.5.1p57解决了我同样的问题
widi83,

132
gem update --system

将更新rubygems并解决问题。


3
只是为了澄清-正如@noraj指出的-该问题是在新版本的捆绑程序中引入的。如果您单击链接,则解决方案是更新RubyGems。
ReggieB

1
gem update --system工作对我来说:ruby 2.5.0bundler 2.0.1macOS 10.13.6
Jagdeep Singh

74

更新:

根据@noraj的回答和@Niels Kristian的评论,以下命令可以完成此任务。

gem update --system
bundle install

我写这个是为了防止有人遇到像我这样的问题。

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


6
“修复”它之后,请确保您修复了.rvm和.gem的目录权限
humanity

1
@humanity请更详细地解释,请购买编辑我的答案
Nik Kov

1
@humanity chrs为您提供答案-您能否通过固定.rvm和.gem的目录权限来阐明您的意思?
BKSpurgeon

1
@Nik kov .rvm和.gem文件夹的位置可能在您的主文件夹中。尝试通过chmod命令更改它们的权限。它为我工作。
Souravirus

4
sudo gem install是一种不好的做法,通常情况下,所有gem安装都应在不使用sudo的情况下进行
iamdi

33

如果由于捆绑器需要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


1
谢谢,您的链接为我节省了
查找

Capistrano在新机器上发生故障,但旧机器却未发生故障。这为我解决了这个问题。
CWitty19年

1
这不可能是OP问题的“真正答案”,因为Bundler 2.0在2017年不存在,尽管人们肯定会找到此页面,因为症状是相同的。
Philihp Busby

我遇到了捆扎机2.0.1的问题
Fabrizio Bertoglio,

以下是版本2.0.0中的其他重大更改:github.com/bundler/bundler/releases/tag/v2.0.0
Joshua Pinter

31

这修复了它:

  1. 删除Gemfile.lock rm Gemfile.lock
  2. 再跑bundle install一次

编辑:不要在生产中使用它!

对于生产,请转到以下答案:https : //stackoverflow.com/posts/54083113/revisions


我正在使用Visual Studio Code,并通过Azure Devops上载和发布,这是Build失败的地方。我只是在本地删除了锁定文件,然后提交并推送了。在“ 安装宝石”步骤上构建失败,但现在可以运行了。
戴维·琼斯,

4
对于现有的生产项目,这是一个糟糕的主意。您最终将安装一堆未经测试的(与您的系统一起)新代码。
Intentss

是的,这是个坏主意,不应视为解决方法。确实证明了其他答案(关于Bundler版本不匹配)是正确的。安装正确版本的Bundler应该可以修复它。
罗宾·多尔蒂

感谢@RobinDaugherty,我已经编辑了答案以警告所有人不要在生产中这样做。
Klonept

这也不应该在开发中完成。锁定文件有充分的理由,不应在现有项目中将其删除。在您的计算机上安装正确版本的捆绑程序可以解决此问题,Gemfile.lock应将删除视为万不得已,因为它可能导致其他问题。
罗宾·多尔蒂

19

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

  • 安全的方法是,在中安装具有相同版本的捆绑程序,Gemfile.lock如果发生了某些不可修复的事情,这不会破坏任何内容。
  • 艰难的方法,只需删除Gemfile.lock并运行bundle install

2
感谢那。绝对每个人都应该使用安全版本,以免使新未经测试的宝石破坏环境。要安装具有特定版本的捆绑软件,例如,1.17使用gem install bundler -v 1.17
anka,

12

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


4

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

gem install bundler -v x.xx.xx

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

选择是你的,我的朋友。


3
我不建议删除Gemfile.lock,因为这也会更新所有gem。这会导致巨大的问题。
Sandro L

@SandroL-完全同意您的说法。但是,对于那些冒险并喜欢戏剧的人来说,这是一个选择。
乔治·凯弗伯克(GeorgKeferböck)

谢谢。安装Gemfile.lock文件夹中的版本可以达到目的!
codeadventurer


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 comment)


0

我今天有同样的问题。我通过删除任何PATHin .bashrc来解决此问题rvm


1
您救了我,我在bashrc中导出了PATH =“ $ PATH:$ HOME / .rvm / bin”,我将其删除并且可以正常工作
bormat


0

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

我在这种情况下通过以下方式解决了问题:

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

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



-2

我不得不做rake clean --force。然后做了gem install rake,依此类推。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.