GLIBC_2.27 エラー: Amazon EC2 での Node.js インストール解決法
問題の概要
Amazon Linux 2 の EC2 インスタンスで Node.js をインストールする際に、以下のエラーが発生することがあります:
node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node)
node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)
このエラーは、Node.js の新しいバージョン(v18 以降)が Amazon Linux 2 の標準 C ライブラリ(glibc)よりも新しいバージョンを要求しているために発生します。
GLIBC とは?
GNU C Library (glibc) は、Linux システムの基本的なシステムコールとライブラリ関数を提供する重要なコンポーネントです。Node.js のようなアプリケーションは、特定の glibc バージョンに依存してコンパイルされています。
解決方法
方法 1: Node.js 16 LTS を使用する(推奨)
最も簡単な解決策は、Amazon Linux 2 と互換性のある Node.js 16 LTS を使用することです:
# 現在の Node.js 18 をアンインストール
nvm uninstall 18.0.0
# Node.js 16 LTS をインストール
nvm install 16
# 使用するバージョンを設定
nvm use 16
TIP
Node.js 16 は 2023年9月まで長期サポート(LTS)が提供されており、安定性と互換性の面で優れています。
方法 2: 非公式 glibc ビルドを使用する
Node.js の新しいバージョンが必要な場合は、非公式ビルドを利用できます:
# Node.js 非公式ビルドをダウンロード
wget -nv https://unofficial-builds.nodejs.org/download/release/v22.17.1/node-v22.17.1-linux-x64-glibc-217.tar.gz
# インストールディレクトリを作成
mkdir /usr/local/lib/node
# アーカイブを解凍
tar -xf node-v22.17.1-linux-x64-glibc-217.tar.gz
# ファイルを移動
mv node-v22.17.1-linux-x64-glibc-217 /usr/local/lib/node/nodejs
# 環境変数を設定
echo "export NVM_DIR=''" >> /home/ec2-user/.bashrc
echo "export NODEJS_HOME=/usr/local/lib/node/nodejs" >> /home/ec2-user/.bashrc
echo "export PATH=\$NODEJS_HOME/bin:\$PATH" >> /home/ec2-user/.bashrc
# 環境変数を再読み込み
source /home/ec2-user/.bashrc
# インストールを確認
node --version
方法 3: 手動でバイナリをインストールする
特定の Node.js バージョンを手動でインストールする方法:
# Node.js バイナリをダウンロード
wget -nv https://d3rnber7ry90et.cloudfront.net/linux-x86_64/node-v18.17.1.tar.gz
# ディレクトリ作成
mkdir -p /usr/local/lib/node
# 解凍
tar -xf node-v18.17.1.tar.gz
# 移動
mv node-v18.17.1 /usr/local/lib/node/nodejs
# パス設定
echo "export NVM_DIR=''" >> /home/ec2-user/.bashrc
echo "export NODEJS_HOME=/usr/local/lib/node/nodejs" >> /home/ec2-user/.bashrc
echo "export PATH=\$NODEJS_HOME/bin:\$PATH" >> /home/ec2-user/.bashrc
# 環境をリロード
source /home/ec2-user/.bashrc
# 確認
node -e "console.log('Running Node.js ' + process.version)"
方法 4: OS のアップグレード
長期的な解決策として、Amazon Linux 2023 などより新しい OS にアップグレードすることを検討してください。Amazon Linux 2023 には glibc 2.34 が含まれており、新しい Node.js バージョンと互換性があります。
トラブルシューティング
現在の glibc バージョンを確認
ldd --version
Amazon Linux 2 では通常、glibc 2.26 が含まれており、Node.js 18 以上には不十分です。
NVM 設定のリセット
NVM の設定に問題がある場合、以下のコマンドでリセットできます:
nvm use --delete-prefix v18.0.0
予防策
- プロダクション環境では安定版を使用:最新バージョンではなく、LTS バージョンの Node.js を使用しましょう
- 環境の互換性を確認:デプロイ前にステージング環境でテストを行いましょう
- ドキュメントを参照:AWS の最新の推奨事項を常に確認しましょう
注意
非公式ビルドはセキュリティアップデートやバグ修正が遅れる可能性があるため、プロダクション環境での使用は注意が必要です。
まとめ
Amazon Linux 2 で Node.js をインストールする際の GLIBC エラーは、以下のいずれかの方法で解決できます:
- Node.js 16 LTS を使用する(最も簡単で安全)
- 非公式 glibc ビルドを使用する(新しいバージョンが必要な場合)
- 手動でバイナリをインストールする
- OS をアップグレードする(長期的な解決策)
プロダクション環境では、安定性とサポートの観点から Node.js 16 LTS の使用を推奨します。