nを使用してnode.jsをアップデートしたときの記録です。
こちらの記事を参考にしました。
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.0 → 6.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もアップデートが完了しました。