【问题标题】:Bundle update mini_racer is updating rails even though it is not supposed to?Bundle update mini_racer 正在更新 rails,即使它不应该更新?
【发布时间】:2019-01-06 19:30:47
【问题描述】:

我遇到了与其他人相同的 mini_racer 更新问题,但常见的建议对我不起作用。

在我的 gemfile 中使用 mini_racer 0.2.0 运行 bundle install 时出现以下错误...

2 warnings generated.
linking shared-object mini_racer_extension.bundle
clang: warning: libstdc++ is deprecated; move to libc++ [- 
Wdeprecated]
ld: library not found for -lstdc++
clang: error: linker command failed with exit code 1 (use -v to see 
invocation)
make: *** [mini_racer_extension.bundle] Error 1

make failed, exit code 2

An error occurred while installing mini_racer (0.2.0), and Bundler
cannot continue.
Make sure that `gem install mini_racer -v '0.2.0' --source
'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
mini_racer

我正在尝试使用

更新 mini_racer

bundle update mini_racer

但是当我运行 bundle install 时,我遇到了一个新的(更令人担忧的)错误...

Bundler could not find compatible versions for gem "bundler":
In Gemfile:
rails (~> 5.1.4) was resolved to 5.1.6, which depends on
  bundler (>= 1.3.0)

render_async was resolved to 2.0.0, which depends on
  bundler (~> 1.8)

Current Bundler version:
bundler (2.0.1)
This Gemfile requires a different version of Bundler.
Perhaps you need to update Bundler by running `gem install bundler`?

Could not find gem 'bundler (~> 1.8)', which is required by gem 
'rails (~>
5.1.4)', in any of the sources.

在不更新依赖项的情况下更新 mini_racer 应该怎么做? (至少我认为这是正在发生的事情)

【问题讨论】:

  • 这看起来可能与最近到 2.0 的捆绑程序更新有关;您的错误消息是关于捆绑器的。看这里:stackoverflow.com/a/54068004/2892779
  • 我刚刚尝试卸载并重新安装 v 1.17.3,就像链接建议的那样,但我仍然遇到与 mini Racer 相同的问题。我看到了一篇我应该更新迷你赛车的帖子,但是当我更新迷你赛车时,我也会更新轨道,这会对其他一切造成混乱。
  • 迷你赛车错误看起来是由于缺少依赖项。您可以尝试使用 Homebrew 安装 GCC。 brew install gcc。然后再次捆绑安装。你不想bundle update mini_racer,这就是试图升级你的rails

标签: ruby-on-rails ruby command-line rubygems bundler


【解决方案1】:

您的第一次失败是由于缺少对 miniracer 的依赖。该错误消息中的关键是:

library not found for -lstdc++

您需要安装 gcc。如果你使用 Homebrew,你可以运行 brew install gcc

rails 搞砸的原因是,当您运行 bundle update 命令时,它看起来像是在更新所有内容,包括依赖项。我相信有一个捆绑器标志可以强制它只更新您选择的宝石,但这仍然对您没有帮助,因为您缺少迷你赛车所需的依赖项。

安装 gcc 后,只需运行 bundle install。那应该可以正确安装迷你赛车。

正如我所指出的,捆绑器错误是由于最近更新了捆绑器。我暂时锁定到 1.17.3,因为我没有运气解决该错误消息。

【讨论】:

    【解决方案2】:

    想出了一个解决方法。

    问题是 heroku 不支持 bundler 2.0 及更高版本,如果我们更新了 mini_racer,它正在更新 bundler,所以为了让 mini_racer 和 heroku 满意,我们在 gemfile 中更新了 mini_racer 并指定了最新版本,并且那么我们总是使用

    gem install bundler --version 1.16.4

    直到 heroku 支持更新的捆绑器版本。

    【讨论】:

      猜你喜欢
      • 2023-02-04
      • 2021-07-03
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多