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

Posted

技术标签:

【中文标题】find_spec_for_exe\': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException)【英文标题】:find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)find_spec_for_exe': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException) 【发布时间】:2018-04-12 01:51:35 【问题描述】:

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

现在我有:

gem -v2.6.14 ruby -v ruby​​ 2.3.5p376(2017-09-14 修订版 59905)[x86_64-darwin15] jekyll -vjekyll 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解释器版本(不知道如何处理):RUBY_VERSION。

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

【问题讨论】:

这可以帮助吗:github.com/rvm/rvm/issues/1860 @Cyzanfar 谢谢你!我试过了,现在进程出现新错误:***.com/questions/47035080/… 【参考方案1】:

更新:

根据@noraj 的answer 和@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

【讨论】:

“修复”它后,请确保修复您对 .rvm 和 .gem 的目录权限 @humanity 请解释得更详细,购买编辑我的答案 @humanity chrs 为您解答 - 您能否通过修复 .rvm 和 .gem 的目录权限来详细说明您的意思? @Nik kov .rvm 和 .gem 文件夹的位置可能在您的主文件夹中。尝试通过 chmod 命令更改它们的权限。它对我有用。 sudo gem install 是不好的做法,在正常情况下,所有 gem install 都应该在没有 sudo 的情况下工作【参考方案2】:

我今天遇到了同样的问题。我通过为旧的rvm 删除.bashrc 中的任何PATH 来解决此问题。

【讨论】:

你救了我,我的 bashrc 中有 export PATH="$PATH:$HOME/.rvm/bin",我删除它并且它可以工作【参考方案3】:

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

希望这对至少一个人有所帮助

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

如果您使用 rvm use 更改了您正在使用的 ruby​​ 版本,请删除 Gemfile.lock 并重试。

【讨论】:

【参考方案6】:

我的问题是Gemfile.lock 文件有一个BUNDLED_WITH 版本的1.16.1gem install bundler 安装版本2.0.1,所以在寻找正确的文件夹时存在版本不匹配

gem install bundler -v 1.16.1 已修复

当然,您也可以按照Sam3000 的建议,将Gemfile.lockBUNDLED_WITH 更改为最新的bundler 版本并使用最新的软件

【讨论】:

作为替代方案,您可能希望将 BUNDLED_WITH 版本更改为最新版本的 bundler。这对我有用,也让我不需要过时的软件:) Bundler 2 刚刚发布,因此如果您没有在 Dockerfile 中指定上述内容,您将遇到此错误bundler.io/blog/2019/01/03/announcing-bundler-2.html 嗨@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 解决了我同样的问题【参考方案7】:

在我的特殊情况下,我将 ruby​​ 从 2.5.x 降级到 2.4.x。

【讨论】:

【参考方案8】:

如果您尝试安装 bundler 2.0.1 或 2.0.0,真正的答案就在这里,因为 Bundler 需要 RubyGems v3.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

【讨论】:

谢谢,您的链接为我节省了一些时间在谷歌上搜索问题 Capistrano 在新机器上失败,但在旧机器上没有。这为我解决了这个问题。 它不可能是 OP 问题的“真正答案”,因为 Bundler 2.0 在 2017 年不存在,尽管人们肯定会找到这个页面,因为症状是一样的。 我遇到了 bundler 2.0.1 的问题 以下是 2.0.0 版中的其他重大更改:github.com/bundler/bundler/releases/tag/v2.0.0【参考方案9】:

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

gem install bundler -v x.xx.xx

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

朋友,选择权在你。

【讨论】:

我不建议删除 Gemfile.lock,因为这也会更新所有 gem。这可能会导致巨大的问题。 @SandroL - 完全同意你的说法。但是,对于那些喜欢冒险并喜欢戏剧的人来说,这是一个选择。 谢谢。安装我在Gemfile.lock 文件夹中的版本就可以了!【参考方案10】:
gem update --system

将更新 ruby​​gems 并修复问题。

【讨论】:

只是为了澄清 - 正如@noraj 指出的那样 - 问题是在新版本的捆绑器中引入的。如果您点击链接,解决方案是更新 RubyGems。 gem update --system 为我工作:ruby 2.5.0bundler 2.0.1macOS 10.13 .6. @ReggieB:什么链接? @Teekin bundler.io/blog/2019/01/04/…【参考方案11】:

这解决了它:

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

编辑:不要在生产中这样做!

对于生产去这个答案: https://***.com/posts/54083113/revisions

【讨论】:

我正在使用 Visual Studio Code 并通过 Azure Devops 上传和发布,这是构建失败的地方。我只是在本地删除了锁定文件,提交然后推送。 Install Gems 步骤中的构建失败,但现在可以正常工作了。 对于现有的生产项目,这是一个糟糕的主意。您最终将安装一堆未经测试(使用您的系统)的新代码。 是的,这是一个坏主意,不应被视为修复。它确实证明了另一个答案(关于 Bundler 版本不匹配)是正确的。安装正确版本的 Bundler 应该可以修复它。 感谢@RobinDaugherty,我已经编辑了答案以警告大家不要在生产中这样做。 这也不应该在开发中完成。锁定文件有充分的理由,不应该在现有项目中删除它。 Installing the correct version of bundler on your machine 修复了问题,删除Gemfile.lock 应该被视为最后的手段,因为它可能会导致其他问题。【参考方案12】:

原因是你当前的 ruby​​ 环境,你的 bundler 版本与 Gemfile.lock 中的版本不同。

安全的方法,在Gemfile.lock安装同版本的bundler,万一发生不合时宜的事情也不会破坏任何东西。 很难,只需删除Gemfile.lock,然后运行bundle install

【讨论】:

谢谢。绝对每个人都应该使用 safe 版本,以免用新的 untested gems 弄乱环境。安装特定版本的捆绑器,例如1.17 使用gem install bundler -v 1.17【参考方案13】:

就我而言,上述建议对我不起作用。我的情况略有不同。

当我尝试使用gem install bundler 安装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 dint 工作)。

然后成功安装bundler

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

【讨论】:

【参考方案14】:

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

我在这种情况下通过以下方式修复了它:

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

之后,rbenv 工作正常。不确定这些环境变量是如何被加载的......

【讨论】:

【参考方案15】:

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

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

【讨论】:

以上是关于find_spec_for_exe': 找不到 gem bundler (>= 0.a) (Gem::GemNotFoundException)的主要内容,如果未能解决你的问题,请参考以下文章

.razor.g.cs 找不到

为啥 g++ 找不到 iostream.h?

在 Ubuntu 的 PATH 中找不到程序“g++”

g++ 找到 -lXext 但 MinGW 找不到它并出现错误:i586-mingw32msvc/bin/ld: 找不到 -lXext

esxi 2.5G网卡重启找不到

g++ 在 /usr/local/lib 中找不到库