EC2

【AmazonLinux2】EC2のサーバにNodeJS18をセットアップする

久し振りに EC2 で nodejs を実行させたい要望が出てきました。

過去に newman を動かすために node のバージョンアップを行ってから数年。

AmazonLinuxでNodeJS10からNodeJS12にバージョンアップする「AmazonLinux で NodeJS 12.x を動かしたいけど、既に NodeJS 10.23.0 がインストールされている」...

その時にインストールした NodeJS12 のサポートも終わり、NodeJS14 も 1 年を切りました。
(2022 年 6 月現在)

【AmazonLinux2】EC2のサーバにNodeJS18をセットアップする

今回は新規インストールということで最新の NodeJS18 をセットアップしてみます。

AmazonLinux2

NodeJS はデフォルトではインストールされていないので yum で検索してみます。

AmazonLunux2 には NodeJS のパッケージが準備されていますね。

nodejs.x86_64 : JavaScript runtime

肝心なのは NodeJS のバージョン。

早速、確認してみましょう。

どうやら 16.15.0 のパッケージがインストール対象のようですね。

NodeJS18のインストール

残念ながら 16.15.0 ということで最新バージョンではありません。

ということで、18.x 系を使うとしたら rpm からですね。

インストール対象のパッケージは変わったでしょうか。

18.4.0 ってことで、つい最近リリースされたバージョンがターゲットとなりました。

ではインストールします。

おやっ、エラーが出ましたね。

AmazonLinux2 固有の問題でしょうか。

手元に AmazonLinux の EC2 があるので、そちらでも確認してみます。

AmazonLinux

既に新規インストールのサポートが終了している AmazonLinux ですが、運用中のサーバはまだ残っていたりしますよね。

古くからある AMI をベースにしているというところもありそうですし・・・。

AmazonLinux には yum の nodejs パッケージはないので、まずは rpm をセットアップします。

node のセットアップに必要な gcc-c++ と make をインストールします。

上記の手順は、nodesource のドキュメントを参考にしています。

では、nodejs 本体のインストールをしてみましょう。

AmazonLinux2 と同じくエラーになりますね。

フォーラムで調べてみると、

You will not find those libraries in those versions for CentOS 7.
Even if you did, installing them would most likely break more than fix anything.

From a quick test, it seems the pub_18.x repository is just broken.
pub_17.x installs fine.

I would suggest to either use 17.x and/or file a bug on the NodeSource’s GitHub repo.

nodesource にある CentOS7 向けの nodejs18 の構成が壊れているとの情報が。

NodeJS16のインストール

ということで、AmazonLinux では一旦 16.x 系を入れておきます。

18.x 系のインストールを試みたので、yum のキャッシュは念のため削除しておきますか。

yumのキャッシュ用のファイルを削除するyum でパッケージ一覧などの情報を取得する際に、ディスク上にキャッシュの情報が作成されます。 それによって、連続で実行する際の情報取得...

ではインストールします。

まとめ

AmazonLinux2 へ NodeJS の 18.x 系をインストールする方法を紹介してきました。

残念ながら、yum のインストール中にエラーが発生したため、AmazonLinux では最新版のセットアップを断念し 16.x 系を。

AmazonLinux2 も同様だと思いますので、フォーラムに書かれていた問題が解決するのを待ちましょうか。

NodeJS に限らず、Kubernetes や Laravel など多くのアプリケーションのバージョンアップサイクルが短くなっています。

メジャーバージョンアップのリスクはありますが、早めの対応をしておきたいですね。

EKS や ECS など Docker 運用の場合はそこまで気にすることもないでしょうが。