【问题标题】: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 一无所知 :) 所以我会很感激一些见解!

【问题讨论】:

标签: ruby rubygems bundle jekyll


【解决方案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:什么链接?
          【解决方案11】:

          这解决了它:

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

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

          对于生产去这个答案: https://stackoverflow.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://stackoverflow.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)"
              

              【讨论】:

                猜你喜欢
                • 2019-05-31
                • 1970-01-01
                • 1970-01-01
                • 2019-08-17
                • 1970-01-01
                • 2018-01-22
                • 2012-03-29
                • 1970-01-01
                • 2023-02-04
                相关资源
                最近更新 更多