已经部署了我的 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'
同样运行推荐的 g
em install nokogiri --platform=ruby
并不能解决问题。
在 64 位 Amazon Linux 2/3.4.3 上运行的 Ruby 2.7
如有任何帮助,我们将不胜感激。
我成功的解决方法是使用 nokogiri 1.10.10。在 v1.11 之前,nokogiri 不提供预编译的 arch64 二进制文件,因此这将强制实例本地编译 gem。
在您的 Gemfile 中指定:
gem 'nokogiri', '1.10.10'
我之前尝试在 AWS EB 实例配置中将 BUNDLE_FORCE_RUBY_PLATFORM 设置为 true,但这似乎并没有导致 gem 被本机编译。
如有任何帮助,我们将不胜感激。
错误消息告诉您确切地出了什么问题:
nokogiri.so
要解决此问题,您需要获得适合您(旧)目标系统的
nokogiri.so
。您不能只是从较新的系统复制它。