捆绑包安装错误并且无法继续,即使在安装丢失的 gem 之后也是如此

Bundle install errors and cannot continue, even after installing missing gems

我正在 Rails 应用程序上处理多个 Ruby 并且 运行ning... 苹果操作系统 10.15.7, Ruby 2.6.5, Rails5.2.3,

在项目应用程序目录中,我尝试 运行 一个 bundle install 并得到以下错误:

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

我继续从指定来源安装 gem 并获得安装确认

Building native extensions. This could take a while...
Successfully installed jaro_winkler-1.5.3
Parsing documentation for jaro_winkler-1.5.3
Done installing documentation for jaro_winkler after 0 seconds
1 gem installed

再次运行宁bundle install后,会得到原来的错误

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory:
/private/var/folders/yr/dw4ljvv14cl9vp76jt_6zqrsv1qhkf/T/bundler20210406-62421-1bm7o1ijaro_winkler-1.5.3/gems/jaro_winkler-1.5.3/ext/jaro_winkler
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r
./siteconf20210406-62421-10txxc5.rb extconf.rb
creating Makefile

current directory:
/private/var/folders/yr/dw4ljvv14cl9vp76jt_6zqrsv1qhkf/T/bundler20210406-62421-1bm7o1ijaro_winkler-1.5.3/gems/jaro_winkler-1.5.3/ext/jaro_winkler
make "DESTDIR=" clean

current directory:
/private/var/folders/yr/dw4ljvv14cl9vp76jt_6zqrsv1qhkf/T/bundler20210406-62421-1bm7o1ijaro_winkler-1.5.3/gems/jaro_winkler-1.5.3/ext/jaro_winkler
make "DESTDIR="
make: *** No rule to make target
`/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19/ruby/config.h',
needed by `adj_matrix.o'.  Stop.

make failed, exit code 2

Gem files will remain installed in
/var/folders/yr/dw4ljvv14cl9vp76jt_6zqrsv1qhkf/T/bundler20210406-62421-1bm7o1ijaro_winkler-1.5.3/gems/jaro_winkler-1.5.3
for inspection.
Results logged to
/var/folders/yr/dw4ljvv14cl9vp76jt_6zqrsv1qhkf/T/bundler20210406-62421-1bm7o1ijaro_winkler-1.5.3/extensions/universal-darwin-19/2.6.0/jaro_winkler-1.5.3/gem_make.out

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

上面的错误消息没有给我任何明确的指示,说明发生了什么。此外,消息显示“结果记录到”的位置还有 no such directory

这似乎发生在多个应用程序目录中 - 但每个目录中受影响的 gems 不同。它们的相似之处在于错误显示为“确保 gem 在捆绑之前成功”,然后 gem 安装将成功,然后以下 bundle install 将失败并显示相同的原始消息。

今天早些时候我做了一个干净的 Ruby 2.6.5 安装并通过 xcode-select --install

更新了 Xcode CLI

如果我运行gem which jaro_winkler我得到

/Users/{username}/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/jaro_winkler-1.5.3/lib/jaro_winkler.rb

有没有人知道可能导致这种情况的原因?如果不发生这种情况,我无法做任何 bundle install。如果需要更多信息,请告诉我。 谢谢!

您提到您正在使用 ruby 2.6.5,但 gem 正试图安装在 2.6.0 中。检查您的 Gemfile 中是否包含正确的 Ruby 版本。

当您 运行 gem which 时,看起来您正在使用 rbenv。确保您也在其中使用正确的 Ruby 版本。这些红宝石安装在与 xcode 不同的目录中。有时目录中有一个 .rbenv 文件也会设置版本。

只是一些想法。希望能坚持下去。

最终成为 gem 安装位置的问题 - export PATH="/usr/local/bin:$PATH" 之前已添加到我的 .bash_profile,这影响了 gem 的安装位置。

错误消息中的某处提到了 /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby - 这是 Ruby 的“系统默认”Mac 版本,而不是我想要的 Ruby 版本与 .rbenv ( 2.6.5 ) 和 gem 安装一起使用。

删除上述导出有助于解决问题。

编辑措辞