AWS 服务器上的 Rails 部署 (EBS) | nokogiri-1.13.3-aarch64-linux 与 GLIBC_2.29 相关的问题

Mat*_*son 5 glibc ruby-on-rails amazon-web-services amazon-elastic-beanstalk ruby-2.7

已部署我的 Rails 应用程序,但现在 /var/log/puma/puma.log 文件中出现以下错误

Early termination of worker

ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system with glibc < 2.17:

  /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /var/app/current/vendor/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so) - /var/app/current/vendor/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/2.7/nokogiri.so

  If that's the case, then please install Nokogiri via the `ruby` platform gem:
      gem install nokogiri --platform=ruby
  or:
      bundle config set force_ruby_platform true

  Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help.

[21228] ! Unable to start worker
[21228] /var/app/current/vendor/bundle/gems/nokogiri-1.13.3-aarch64-linux/lib/nokogiri/extension.rb:7:in `require_relative'
Run Code Online (Sandbox Code Playgroud)

另外运行推荐的 gem install nokogiri --platform=ruby并不能解决问题。

在 64 位 Amazon Linux 2/3.4.3 上运行的 Ruby 2.7

任何帮助表示赞赏。

小智 2

我成功的解决方法是使用 nokogiri 1.10.10。在 v1.11 之前,nokogiri 不提供预编译的 arch64 二进制文件,因此这将强制实例本地编译 gem。

在您的 Gemfile 中指定:

gem 'nokogiri', '1.10.10'

我之前尝试在 AWS EB 实例配置中将 BUNDLE_FORCE_RUBY_PLATFORM 设置为 true,但这似乎并没有导致 gem 被本机编译。