yucatio@システムエンジニア

趣味で作ったものいろいろ

nコマンドを使用してnode.jsをバージョンアップする

nを使用してnode.jsをアップデートしたときの記録です。

こちらの記事を参考にしました。

parashuto.com

nのインストール

nとは、node.jsのバージョンを管理するツールです。

nをインストールします。バージョン6.1.3がインストールされました。

$ npm install -g n
/usr/local/bin/n -> /usr/local/lib/node_modules/n/bin/n
+ n@6.1.3
added 1 package from 4 contributors in 1.085s

   ╭───────────────────────────────────────────────────────────────╮
   │                                                               │
   │       New minor version of npm available! 6.2.06.5.0       │
   │   Changelog: https://github.com/npm/cli/releases/tag/v6.5.0   │
   │               Run npm install -g npm to update!               │
   │                                                               │
   ╰───────────────────────────────────────────────────────────────╯

アップデート前のnodeのバージョン

アプデート前のnodeとnpmのバージョンです。それぞれ-vオプションで確認できます。

$ node -v
v10.8.0
$ npm -v
6.2.0

nodeの安定板を入手

最新の安定板のバージョンを確認します。

$ n --stable
12.13.1

最新の安定板をインストールします。

$ n stable

  installing : node-v12.13.1
       mkdir : /usr/local/n/versions/node/12.13.1
mkdir: /usr/local/n/versions/node/12.13.1: Permission denied

  Error: sudo required (or change ownership, or define N_PREFIX)

パーミッションエラーになってしまいました。

Error: sudo required (or change ownership, or define N_PREFIX)

「エラー: sudoが必要。(または、パーミッションを変更するか、N_PREFIXを使用してください)」と書いてあります。

今回はsudoを使用します。

$ sudo n stable
Password:

  installing : node-v12.13.1
       mkdir : /usr/local/n/versions/node/12.13.1
       fetch : https://nodejs.org/dist/v12.13.1/node-v12.13.1-darwin-x64.tar.gz
   installed : v12.13.1 (with npm 6.12.1)

nodeのバージョンを確認します。

$ node -v
v12.13.1

最新の安定板にアップデートされました。 ちなみに最新版を使用したい場合は、"stable"を"latest"に変更します。

N_PREFIXを使用する場合について

Error: sudo required (or change ownership, or define N_PREFIX)

こちらのエラーをN_PREFIXを使用して対処する場合。

N_PREFIXはnodeモジュールをインストールする場所です。デフォルトでは/usr/localです。 インストールする場所を、例えば${HOME}/.nに変更する場合は、GitHub - tj/n: Node version managementに書いてあるとおり、.bash_profileなどの起動シェルに以下を記載します。

export N_PREFIX=$HOME/.n
export PATH=$N_PREFIX/bin:$PATH

npmのアップデート

あわせて、npmもアップデートします。

$ npm update -g npm
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/https-proxy-agent
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/make-fetch-happen
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/pacote/node_modules/minipass
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/pacote
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/read-cmd-shim
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/smart-buffer
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/socks
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/npm/node_modules/pacote/node_modules
npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules/npm/node_modules/https-proxy-agent
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/https-proxy-agent'
npm ERR!  [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/https-proxy-agent'] {
npm ERR!   stack: "Error: EACCES: permission denied, access '/usr/local/lib/node_modules/npm/node_modules/https-proxy-agent'",
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules/npm/node_modules/https-proxy-agent'
npm ERR! }
npm ERR! 
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! 
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/yucatio/.npm/_logs/2019-12-04T00_47_45_795Z-debug.log

エラーになりました。こちらもsudoが必要です。

$ sudo npm update -g npm
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
+ npm@6.13.2
updated 8 packages in 6.705s

npmのバージョンを確認します。

$ npm -v
6.13.2

npmもアップデートが完了しました。

環境