我遇到了与其他人相同的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
但是当我运行捆绑安装时,我遇到了一个新的(而且更令人震惊的)错误...
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? (至少我认为这是正在发生的事情)
答案 0 :(得分:1)
您的第一个失败是由于缺少迷你赛车手的依赖性。该错误消息中的键是:
library not found for -lstdc++
您需要安装gcc。如果您使用的是Homebrew,则可以运行brew install gcc
rails被搞砸的原因是因为当您运行bundle update命令时,它似乎正在更新所有内容,包括依赖项。我相信有一个捆绑程序标志可以强制其仅更新您选择的宝石,但是由于您缺少小型赛车手所需的依赖关系,因此仍然无法为您提供帮助。
安装gcc后,只需运行bundle install
。那应该安装迷你赛车没有错误。
如我所述,捆绑器错误是由于最近对捆绑器进行的更新所致。我暂时锁定在1.17.3,因为我没有运气解决该错误消息。
答案 1 :(得分:0)
找出解决方法。
问题是heroku不支持bundler 2.0及更高版本,并且如果我们更新mini_racer,它将更新bundler,因此为了使mini_racer和heroku开心,我们在gemfile中更新了mini_racer并指定了最新版本,并且那么我们总是使用
gem install bundler --version 1.16.4
直到heroku支持更新的捆绑程序版本。