📚
Nokogiriの互換性エラー
このエラーは、Nokogiriがシステムのglibcバージョンと互換性がないために発生しています。Amazon Linux 2 はデフォルトで glibc 2.26 を使用しており、Nokogiriが要求している glibc 2.28 ではないため、ライブラリがロードできずエラーが発生しています。
解決策
1. NokogiriをRubyプラットフォームで再インストール
Nokogiriをプリコンパイルされたバイナリではなく、Rubyネイティブビルドとしてインストールすることで解決できる可能性があります。
以下のコマンドを試してください
cd ~/environment/postgresql # Railsプロジェクトのディレクトリへ移動
bundle config set force_ruby_platform true
bundle install
この設定 (force_ruby_platform true) により、プリコンパイルされたバージョンではなく、ソースコードからコンパイルされるバージョンがインストールされます。
2. Nokogiriを手動でインストール
もし上記で解決しない場合、以下の方法でNokogiriを手動でインストールしてみてください。
gem uninstall nokogiri
gem install nokogiri --platform=ruby
その後、Railsプロジェクト内で bundle install を実行してください。
3. GLIBCをアップグレード
もしどうしても glibc 2.28 が必要な場合、EC2 (Amazon Linux 2) に glibc 2.28 を手動でインストールする方法もありますが、これはリスクが高いため基本的には推奨しません。
どうしても glibc をアップグレードしたい場合、Amazon Linux 2023 への移行を検討するか、Dockerコンテナを使うことも選択肢です。
4. sprockets-railsのインストール
また、エラーメッセージの中に LoadError: cannot load such file -- sprockets-rails という記述があるので、sprockets-rails も不足している可能性があります。
以下のコマンドでインストールできます。
bundle add sprockets-rails
bundle install
まとめ
-
bundle config set force_ruby_platform trueを実行し、bundle installでNokogiriを再インストール。 - うまくいかなければ、
gem install nokogiri --platform=rubyを試す。 -
sprockets-railsを追加してbundle installする。 - それでも解決しない場合は、Amazon Linux 2 を
glibc 2.28にアップグレードするか、Amazon Linux 2023 へ移行する。
まずは 1 から試してみてください!
Discussion