Syntax Error.

[Sy] Node.jsを「n」でアップグレードする手順

2015/07/21

nというモジュールをnpmでインストールしてNode.jsのアップグレードを行う手順です。

開発環境ではnvmとかnodebrewとか使って複数バージョンのNode.jsを管理して、アプリごとに切り替えるようにしてますが、どちらも使っていない環境でNode.jsのバージョンを上げることがあって、nというモジュールをnpmでインストールしてアップグレードする方法があることを知ったのでやってみました。その時の手順です。

この記事を参考にしてます。

⇒ npmでnode.jsのアップグレード - Qiita

1. キャッシュ削除

まずはキャッシュ?を一旦きれいにします。

$ sudo npm cache clean -f
npm WARN using --force I sure hope you know what you are doing.

2. nをインストール

npmを使ってnというモジュールをインストールします。

$ sudo npm install -g n
/usr/bin/n -> /usr/lib/node_modules/n/bin/n
n@2.0.1 /usr/lib/node_modules/n

nについての説明はここがわかりやすかったです。

⇒ Nodeの複数バージョン管理のお供にnをどうぞ

nvmとかと違って、一応バージョンごとに複数管理できるけども、nodeバイナリを使用したいバージョンのものに置き換えるという方法なので、同時に複数バージョンを扱えるというものではない という点に注意ですね。

3. アップグレードしたいバージョンのバイナリをインストール+切り替え

nをインストールできたら、最新版のnodeバイナリをインストールして切り替えます。

以下コマンドで、そのバージョンがインストールされてなければ「インストール+切り替え」、インストールされていれば「切り替え」のみが行われるようです。

$ sudo n stable

     install : node-v0.12.7
       mkdir : /usr/local/n/versions/node/0.12.7
       fetch : https://nodejs.org/dist/v0.12.7/node-v0.12.7-linux-x64.tar.gz

 ・
 ・
 ・

   installed : v0.12.7

バージョンを確認すると、ちゃんと切り替えられています。

$ node --version
v0.12.7

(おまけ)稼働中のアプリがある場合のアップグレード

nを使ったアップグレードをしながら、foreverでデーモン化しているアプリのログを確認してましたが、特にアプリが落ちたりもなく、ダウンタイムはなかったように見えました。(バージョン間の差異には注意が必要でしょうけど)

たぶんforeverの再起動は必要なんだろうと思ってそれはしときましたが、常時アクセスが途切れないようなアプリでも結構安心してアップグレードできそうな感じで良かったです。(nというよりかforeverのおかげかも?)