ChatGPT解决这个技术问题 Extra ChatGPT

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

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

我现在有:

宝石-v 2.6.14

ruby -v ruby 2.3.5p376(2017-09-14 修订版 59905)[x86_64-darwin15]

jekyll -v jekyll 3.6.2

捆绑 -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 对此表示感谢!我试过了,现在这个过程出现了一个新错误:stackoverflow.com/questions/47035080/…

A
Antonio Tapiador

在我的情况下,问题是 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 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,我会得到 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 解决了我同样的问题
a
antonpaisov
gem update --system

将更新 rubygems 并解决问题。


只是为了澄清 - 正如@noraj 指出的那样 - 问题是在新版本的捆绑器中引入的。如果您点击链接,解决方案是更新 RubyGems。
gem update --system 为我工作:ruby 2.5.0bundler 2.0.1macOS 10.13.6
@ReggieB:什么链接?
C
Community

更新:

根据@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 的情况下工作
K
Klonept

这修复了它:

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

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

对于生产转到这个答案:https://stackoverflow.com/posts/54083113/revisions


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

如果由于 Bundler 需要 RubyGems v3.0.0 而尝试安装 bundler 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


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

原因是您当前的 ruby 环境,您获得了与 Gemfile.lock 中的版本不同的 bundler 版本。

安全的方法,在 Gemfile.lock 中安装相同版本的 bundler,如果发生了一些不合时宜的事情,这不会破坏任何东西。

很难,只需删除 Gemfile.lock,然后运行捆绑安装。


感谢那。绝对每个人都应该使用 safe 版本,以免用新的 untested gems 弄乱环境。要安装特定版本的捆绑程序,例如 1.17,请使用 gem install bundler -v 1.17
W
Wawa Loo

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


N
Naser Mirzaei

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

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

G
Georg Keferböck

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

gem install bundler -v x.xx.xx

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

选择是你的,我的朋友。


我不建议删除 Gemfile.lock ,因为这也会更新所有 gem。这可能会导致巨大的问题。
@SandroL - 完全同意你的说法。然而,对于那些冒险并被戏剧吸引的人来说,这是一个选择。
谢谢你。安装我在 Gemfile.lock 文件夹中的版本就可以了!
u
user208769

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

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

Gemfile.lock 版本确实需要更新 - 将“BUNDLED WITH”更改为最新版本确实会更改错误消息,因此可能需要

在 .bash_profile 或 .bashrc 中,取消设置环境变量:

unset GEM_HOME
unset BUNDLE_PATH

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


我遇到了同样的问题。我在我的 docker-compose.yml 中将 GEM_HOME、GEM_PATH 和 BUNDLE_PATH 设置为 /gems。取消设置并重建修复它,但我更愿意弄清楚将这些设置为 /gems 并仍然让 rails new ... 之类的东西工作的细微差别......
R
Rahul Dess

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

当我尝试使用 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 评论)


x
xhg

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


你救了我我的 bashrc 中有 export PATH="$PATH:$HOME/.rvm/bin" ,我删除它并且它可以工作
G
Greg Hilston

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

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


V
Victor Pudeyev

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


R
Roshan

我必须做rake clean --force。然后做了gem install rake等等。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅