Bundler:如何删除已卸载的gems

我正在尝试安装pg_search gem。在第一次尝试中,我没有注意 ruby​​ 的必要版本(我们正在使用2.3.1并且2.4是必需的),在出现的错误消息中我被要求运行bundle update,但它更新了 pg_search 到2.3.5需要 ruby >= 2.5。即使我指定了旧版本的 gem,它仍然显示相同的消息:

Gem::InstallError: pg_search requires Ruby version >= 2.5.
An error occurred while installing pg_search (2.3.5), and Bundler cannot continue.
Make sure that `gem install pg_search -v '2.3.5'` succeeds before bundling.
Gem::InstallError: pg_search requires Ruby version >= 2.5.
An error occurred while installing pg_search (2.3.5), and Bundler cannot continue.
Make sure that `gem install pg_search -v '2.3.5'` succeeds before bundling.

我已经通过运行安装了 gem docker-compose run web gem install pg_search -v 2.1.4,并重新创建了容器。我的 Gemfile:

捆绑版本: bundler (>= 1.3.0)

我想知道如何删除 pg_search2.3.5并安装2.1.4.

回答

即使我指定了旧版本的 gem

不,你没有。

你指定了'~> 2.1', '>= 2.1.4',这意味着什么2.1.4 <= version < 3.0.0

通过运行bundle update,这安装了满足您要求的最新可用版本,这显然是2.3.5,而不是2.1.4

如果您还需要为 ruby​​ 版本指定约束2.3.1,您还可以将其放入Gemfile

ruby '2.3.1'

...然后bundle update在查找最新的兼容依赖项时运行也会考虑到这一点。


我想知道如何删除 pg_search 2.3.5 并安装 2.1.4

您没有2.3.5针对此 ruby版本安装版本,因为它不兼容。

显然你已经安装了 version 2.1.4

问题是您Gemfile.lock仍在期待 version 2.3.5。有几种方法可以解决此问题,但是您需要通过一种或另一种方式更新Gemfile.lockruby 版本以具有一组兼容的依赖项。

最简单的方法可能是重新运行bundle update pg_search,但请确保这次您实际上使用的是正确的 ruby​​ 版本。这应该会降低依赖关系,因为较新的库版本与较旧的 ruby​​ 版本不兼容。

如果您仍然遇到问题,您可以接受我的建议,将ruby约束添加到Gemfile,并恢复您最近所做的任何其他更改,这些更改创建了这种不兼容的依赖项组合。


以上是Bundler:如何删除已卸载的gems的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>