首页 > 解决方案 > Bundle update mini_racer 正在更新 rails,即使它不应该更新?

问题描述

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

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

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

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

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 而不更新依赖项?(至少我认为这是正在发生的事情)

标签: ruby-on-railsrubycommand-linerubygemsbundler

解决方案


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

library not found for -lstdc++

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

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

安装 gcc 后,只需运行bundle install. 那应该安装迷你赛车没有错误。

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


推荐阅读