nodebrewのインストールとよくあるエラーの対応

macOS Catalina 10.15.2 に nodebrewとnode v10系最新版(v10.18.1)をインストールした。

brewのインストール

公式サイト https://brew.sh/index_jaを参考にコマンド実行

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

nodebrewのインストール

$ brew install nodebrew
==> Downloading https://github.com/hokaccha/nodebrew/archive/v1.0.1.tar.gz
Already downloaded: /Users/hjkt/Library/Caches/Homebrew/downloads/9895acc38dc859a4a1a841cf2e8cd78b519163d3499cdfcd4a08a068ce0babcd--nodebrew-1.0.1.tar.gz
==> Caveats
You need to manually run setup_dirs to create directories required by nodebrew:
  /usr/local/opt/nodebrew/bin/nodebrew setup_dirs

Add path:
  export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew's directories rather than ~/.nodebrew add to your profile:
  export NODEBREW_ROOT=/usr/local/var/nodebrew

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions have been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
?  /usr/local/Cellar/nodebrew/1.0.1: 8 files, 38.6KB, built in 3 seconds

よくあるエラー

ここで気をつけて欲しいのですが、nodebrewのインストール方法を調べるとよく見かけるエラーでこんなものがあります。

$ nodebrew install v10.18.1
Fetching: https://nodejs.org/dist/v10.18.1/node-v10.18.1-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /usr/local/var/nodebrew/src/v10.18.1/node-v10.18.1-darwin-x64.tar.gz:
Warning: No such file or directory

原因は Failed to create the file ということなのでファイルのダウンロード失敗。

正しくない解決方法

いろんなサイトで正しくない対処方法が書かれている。

mkdir -p ~/.nodebrew/src

正しい解決方法

解決方法はnodebrewインストールに書かれている

You need to manually run setup_dirs to create directories required by nodebrew:
/usr/local/opt/nodebrew/bin/nodebrew setup_dirs

なので

/usr/local/opt/nodebrew/bin/nodebrew setup_dirs

というコマンドの実行が正解。

インストール可能なnodeバージョン一覧

10系を入れたいのでgrepして出力

$ nodebrew ls-remote | grep v10
v10.0.0   v10.1.0   v10.2.0   v10.2.1   v10.3.0   v10.4.0   v10.4.1   v10.5.0
v10.6.0   v10.7.0   v10.8.0   v10.9.0   v10.10.0  v10.11.0  v10.12.0  v10.13.0
v10.14.0  v10.14.1  v10.14.2  v10.15.0  v10.15.1  v10.15.2  v10.15.3  v10.16.0
v10.16.1  v10.16.2  v10.16.3  v10.17.0  v10.18.0  v10.18.1

nodeのインストール

v10.18.1をインストール

$ nodebrew install-binary v10.18.1
Fetching: https://nodejs.org/dist/v10.18.1/node-v10.18.1-darwin-x64.tar.gz
################################################################################################################################################## 100.0%
Installed successfully

installとinstall-binaryの違い

installはマニュアルインストール用の資材一式をダウンロードしてインストールする。
install-binaryはコンパイル済み資材一式をダウンロードして展開する。

helpを確認すると、installは

Download and install (from binary)

install-binaryは

Alias of install (For backword compatibility)

ソースコードを確認すると、

        tarballs => {
            node => [
                "https://nodejs.org/dist/#{version}/node-#{version}.tar.gz",
                "https://nodejs.org/dist/node-#{version}.tar.gz",
            ],
            iojs => [
                "https://iojs.org/download/#{release}/#{version}/iojs-#{version}.tar.gz",
            ],
        },
        tarballs_binary => {
            node => [
                "https://nodejs.org/dist/#{version}/node-#{version}-#{platform}-#{arch}.tar.gz",
            ],
            iojs => [
                "https://iojs.org/download/#{release}/#{version}/iojs-#{version}-#{platform}-#{arch}.tar.gz",
            ],
        },

https://github.com/hokaccha/nodebrew/blob/93411b76355860711331de47f669f38f104b7c19/nodebrew#L943

https://github.com/hokaccha/nodebrew/blob/93411b76355860711331de47f669f38f104b7c19/nodebrew#L952

インストール済みバージョンの確認

% nodebrew ls
v10.18.1

current: none

使用するバージョンを設定

$ nodebrew use v10.18.1
use v10.18.1
$ nodebrew ls
v10.18.1

current: v10.18.1

npmのアップデート

$ npm install -g npm
/usr/local/var/nodebrew/node/v10.18.1/bin/npx -> /usr/local/var/nodebrew/node/v10.18.1/lib/node_modules/npm/bin/npx-cli.js
/usr/local/var/nodebrew/node/v10.18.1/bin/npm -> /usr/local/var/nodebrew/node/v10.18.1/lib/node_modules/npm/bin/npm-cli.js
+ npm@6.13.7
added 7 packages from 3 contributors, removed 3 packages and updated 12 packages in 5.109s

$ npm --version
6.13.7

おしまい