【问题标题】:bundle install does not respect Gemfile.lock捆绑安装不尊重 Gemfile.lock
【发布时间】:2023-04-05 19:38:02
【问题描述】:

我在安装包时遇到了一些问题。

当我们运行 'bundle install' 时,Gemfile.lock 中的依赖 gem 之一会自动升级。 根据理论,“捆绑安装”将查找 Gemfile.lock 的版本并且不会解析版本并且将安装相同的版本。只有在没有 Gemfile.lock 或我们给出“bundle update”时才会解决。

在我们的服务器中,我们有 Gemfile.lock 但“捆绑安装”更新了提到 gemfile.lock 的特定 gem(它是一个依赖 gem,所以我们没有在 gemfile 中指定),它不应该这样发生,因为已经锁定文件中存在的版本,即使该版本是自动更新的,由于这次升级,网站中的一些主要功能被破坏了。

供您参考: 捆绑器版本 - 1.17.2 红宝石版本 - 2.5.3 宝石版本 - 2.7.6 导轨版本 - 5.2.3 该依赖项gem名称为“nokogiri”,此gem锁定为1.11.7,但是当我提供“bundle install”时它已更新为“1.12.1”

有什么想法可以防止以后出现这个问题吗?

【问题讨论】:

  • 它是依赖 gem 之一,它单独存在于 Gemfile.lock 文件中,我们没有在 gemfile 中提及它,当我们在一个月前进行捆绑安装时,它现在为 1.11.7 , 我们又在 2 天前做了 bundle install ,那时它已解析为 1.12.1。
  • 是的,明白了你在这里所说的意思,但我的问题是在我上次升级的“捆绑安装”nokogiri 中,将来有可能升级相同的 gem 或任何其他 gem。我的意思是它可能是 nokogiri 宝石任何其他宝石。从我的角度来看,当发生类似问题时,在 gemfile 中提及这些具有确切版本的 gem 并不好。如果自动升级是在我们不知情的情况下发生的,那么我们将如何克服这一点。
  • 这个问题是由于捆绑器还是什么,因为像“捆绑安装”这样的阅读不会自动更新它将安装锁定文件中提到的依赖项的gem,因为存在与相关的讨论这个问题差不多 6 年前了。财政年度:github.com/rubygems/bundler/issues/3175
  • 您需要提供更多详细信息。你加了什么宝石?
  • 当然,目前无法查看此部署期间 gemfile 上发生的确切情况,很快就会更新您。

标签: ruby-on-rails rubygems bundler gemfile gemfile.lock


【解决方案1】:

首先,如果您分享 Gemfile.lock 错误以了解我特别可能导致升级的原因,那就太好了。但从远处看,我认为正如你所说,这个 gem 是一个依赖 gem,它没有在你的 gemfile 中说明。可能另一个 gem 也依赖于这个 gem,并且根据这个要求,它甚至在你假设的 gem 行运行之前触发升级,这可能会导致错误。仔细阅读错误,您可以确定导致此错误的 gem。

在您更新后,我已经阅读了有关此内容的信息。 就像前面所说的那样,这些 gem 之一可能是您的特定 gem 随每个捆绑程序安装更新的原因。不幸的是,没有真正的转机来解决这个问题,但捆绑器确实让路了。 您可以将 --frozen 选项与 bundler 一起使用,它将 gemfile.lock 冻结到每个 gem 的当前版本,并且不会更新任何 gem,而只会安装您拥有的新 gem。不幸的是,这已被弃用,只能从 /.bundle/config 完成。这可以从项目根目录中的命令行完成。 跑 bundle config frozen true 冻结 bundler 更新 gemfile.lock 中的 gem 您可能必须向用户授予写入权限才能编辑捆绑配置。 我也找到了这篇文章from bigbinary.com

【讨论】:

  • 肯定会提供一些来自锁定文件的详细信息,我们在捆绑安装期间没有收到任何错误。其中一个 gem(nokogiri) 已升级到最新版本,因此某些功能无法正常工作。我们后来发现了这个问题,好像是由于 nokogiri gem 从 1.11.7 升级到 1.12.1,然后我们将此 gem 恢复到旧版本..
  • 这些是与 nokogiri 相关的宝石。 nokogiri (1.11.7) mini_portile2 (~> 2.5.0) racc (~> 1.4) nokogiri (1.11.7-x64-mingw32) azure-core (0.1.15) nokogiri (~> 1.6) azure-storage (0.15. 0.preview) nokogiri (~> 1.6, >= 1.6.8) azure-storage-blob (1.1.0) nokogiri (~> 1.6, >= 1.6.8) azure-storage-common (1.1.0) nokogiri ( ~> 1.6, >= 1.6.8) 丝瓜络 (2.12.0) nokogiri (>= 1.5.9) rails-dom-testing (2.0.3) nokogiri (>= 1.6) 观点 (1.1.1) nokogiri
  • 感谢@larry danso,将尝试“捆绑配置冻结为真”选项然后更新您的状态。
  • 一切正常,谢谢。关于此问题的其他参考资料。 stackoverflow.com/questions/68817050/using-bundle-frozenyehudakatz.com/2011/05/30/…
猜你喜欢
  • 2012-11-12
  • 2014-11-05
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多