🦔

node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found

2023/04/29に公開

Ubuntu 18.04 など古い OS で最新の node.js を使おうとすると `GLIBC_2.28' not found などのエラーが出ることがある。対処方法を説明する。

手順

apt update && apt install -y curl
export XDG_CONFIG_HOME=/work
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
export NVM_DIR="$XDG_CONFIG_HOME/nvm"
. "$NVM_DIR/nvm.sh"
nvm install 17.9.1
npm install uglify-js -g

概略

node.js で v20.0.0 など最新のバージョンを使おうとすると必要な GLIBC がプラットフォーム側でインストールされてないことがある。このためプラットフォーム側で対応している node.js の古いバージョンを指定してインストールする。

ポイントは nvm install 17.9.1 で、対応している node.js をバージョン指定でインストールする。

説明

nvm のインストール

https://www.linode.com/docs/guides/how-to-install-use-node-version-manager-nvm/ のサイトに記載の手順で nvm をインストールする。(v0.39.3 の部分で最新の情報は https://github.com/nvm-sh/nvm#install--update-script 参照)

nvm をインストールする際、指定した場所にインストールするため、 XDG_CONFIG_HOME の変数を事前に定義しておく。XDG_CONFIG_HOME の変数を定義しない場合デフォルトの場所にインストールされる。

export XDG_CONFIG_HOME=/work
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash

nvm を使って node.js の指定バージョンをインストールする。

export NVM_DIR="$XDG_CONFIG_HOME/nvm"
. "$NVM_DIR/nvm.sh"
nvm install 17.9.1

nvm install 17.9.1 の代わりに nvm install node を実行すると node.js の最新バージョンをインストールできるので GLIBC のエラーを確認できる。

node.js/npm のインストール確認用に uglify-js をインストールする

npm install uglify-js -g

uglify-js のインストール確認

which uglifyjs

Dockerfile にしたもの

https://github.com/m-tmatma/npm-install-test

参考サイト

https://www.linode.com/docs/guides/how-to-install-use-node-version-manager-nvm/
https://github.com/nvm-sh/nvm/blob/master/README.md#additional-notes
https://www.npmjs.com/package/uglify-js

Discussion