Bundler 无法解析手动安装和删除的 gem 的正确(依赖)版本

Bundler can't resolve the correct (dependent) version of a gem that's manually installed and removed

我绝对没有写过任何Ruby程序。我正在使用 Jekyll 设置我的静态博客。

我通过 bundle install 从 Gemfile 安装了所有东西。我的 Gemfile 如下所示:

source "https://rubygems.org"
gem "github-pages"

group :jekyll-plugins do
    gem "octopress-minify-html"
end

octopress 插件的依赖项之一是 uglifier 2.7.2,它在第一次 bundle install 调用时已正确安装。

稍后尝试另一个依赖于另一个版本的uglifier的插件时,我通过

安装了uglifier
gem install uglifier

在此之前,我用 gem 安装的唯一软件包是 Bundler,其他一切都是通过 bundle install 完成的。上面的命令安装了uglifier 4.1.9,后来用Jekyll构建的时候出现了一些问题

但我似乎无法将丑化器恢复到 2.7.2。从那以后,Bundler 一直在解决 octopress 插件对 uglifier 4.1.9(不兼容)的依赖性。我尝试了 sudo bundle clean --forcesudo gem uninstall --all,删除 ~/.bundle~/.gem 并重新开始,但 Bundler 仍然安装 uglifier 4.1.9 作为依赖项。

我在一个新的 VM 上尝试了整个过程,并从 apt install ruby ruby-dev 开始,这次 Bundler 正确地解析了对 2.7.2 的依赖关系,我能够构建我的站点。它还能在 Travis CI.

上正确解析

问题:如何让 Bundler 忘记 uglifier 4.1.9 并停止我机器上的不良依赖解析?

注意:通过删除整个 WD 并从 GitHub 重新克隆,工作目录保持干净,因此它在不同环境中是一致的。

尝试其中一个

  1. 运行 jekyll 命令在 Gemfile:

    上下文中
    bundle exec jekyll build
    
  2. 重新对齐你的锁文件然后build:

    我。 运行bundle update

    二。 运行bundle exec jekyll build

  3. 重新生成你的锁文件然后build:

    我。删除 Gemfile.lock

    二。 运行bundle exec jekyll build