📚
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