エックスサーバー旧環境のまま、Node22をインストールする (非公式ビルド)
最終更新: 2025-07-07
この記事の対象となるサーバーの環境
-
glibc
2.17
$ yum list installed | grep glibc
Failed to set locale, defaulting to C
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
glibc.x86_64 2.17-326.el7_9 @updates
glibc-common.x86_64 2.17-326.el7_9 @updates
glibc-devel.x86_64 2.17-326.el7_9 @updates
glibc-headers.x86_64 2.17-326.el7_9 @updates
上記のようにglibc 2.17が表示される場合、2024年6月4日以前の旧環境である。
現在のNode.js LTSは、ビルドに必要なglibcの要求が2.28以上になってしまったので、本来ならglibcの更新が必要。
新サーバー簡単移行を使おう
【2025-07-07追記】「新サーバー簡単移行」機能が使えるなら、移行するのが正攻法である。
ただし、どうしてもサーバー番号・IPをキープしながらNode.jsを更新したい場合は、下記のハックを使う。
新サーバー簡単移行を使いたくないなら、nvmをハックせよ
旧サーバーを使い続けたい場合、glibc 2.17しかない環境でも動く非公式ビルドを使う。
つまり、こちらに列挙されている中で、バージョンの末尾のアーキテクチャ部分が linux-x64-glibc-217
となっているビルドは、CentOS7環境でも動く。
以下自己責任ゾーン
ということで、2024年12月31日時点のLTS node-v22.12.0-linux-x64-glibc-217.tar.xz
を、nvmで入手して、エックスサーバーで動かしてみる。
nvmにはミラーサーバーを指定する機能があり、 NVM_NODEJS_ORG_MIRROR
を指定すれば、非公式ビルドにサーバーを変更できる。
だが、ここで問題発生。nvm 0.40.3
時点ではダウンロードするファイル名を指定できないので、非公式ビルドのうちlinux-x64
を探してしまい404になる。
そこでnvm.shを直接編集する。
対処方法としては、 nvm_get_download_slug
関数の返り値に -glibc-217
を無理やりつける。
vi +2375 ~/.nvm/nvm.sh
- nvm_echo "${FLAVOR}-${VERSION}-${NVM_OS}-${NVM_ARCH}"
+ nvm_echo "${FLAVOR}-${VERSION}-${NVM_OS}-${NVM_ARCH}-glibc-217"
決してARCH変数に手を加えてはいけない。あくまでスラッグ部分だけを編集する。こうすることで、後続の処理に影響が出ないようにする。
source .bash_profile
NVM_NODEJS_ORG_MIRROR=https://unofficial-builds.nodejs.org/download/release nvm install v22.12.0
nvm use v22.12.0
編集したら、上記のようにサーバーを指定してnvm install <version>
→ nvm use <version>
する。
更新履歴
- 2023/11/04 master更新されてたのでv0.39.5との比較URL追記
- 2023/12/01 埋め込んだソースコードをv0.39.7に更新
- 2024/12/31 Node22、nvm0.40.1に更新
- 2025/07/07 エックスサーバーの新環境について追記、nvm0.40.3に更新
Discussion