WSL上でNode.jsのバージョンを管理するのに、nを使おうとして苦労したのでまとめておきます。

# まとめ

いろいろ苦労しましたが、最短の手順を先に書いておきます。

# Windows用のアプリのパスを無効にしておく

Windows用のnpmとかNodeが反応すると面倒なので、Windowsのパスを無効にしておきます。

$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# apt管理のnodeを削除

$ sudo apt purge nodejs
$ sudo apt autoremove

# n-installを使ってnをインストール

$ sudo apt install curl git make
$ curl -L https://git.io/n-install | bash

# Windowsのパスが優先されるので優先度変更

~/.bashrc

export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin"
 ↓  
export N_PREFIX="$HOME/n"; PATH="$N_PREFIX/bin:$PATH"

# yarnインストール

シェルを再起動後、

$ npm install -g yarn

yarn global add でインストールされる場所にPATHを通すために、~/.bashrcに追加

export PATH="$HOME/.yarn/bin:$PATH"

# まとめに至るまでの足跡

以下、まとめに至るまでの詳細や確認方法です。

# aptで現状のnodeを削除

$ sudo apt purge nodejs
$ sudo apt autoremove

本当に消えたか確認

$ which node
$ which nodejs
$ which npm
/mnt/c/Program Files (x86)/Nodist/bin/npm

(npmは、Windowsでインストールしたものが表示されるが、あとでなんとかする。)

Node.js 環境構築メモ - Qiita

# nをインストール

n-installを使って、Node.jsのバージョン管理ツールnをインストールします。
mklement0/n-install

$ curl -L https://git.io/n-install | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 39444  100 39444    0     0  27777      0  0:00:01  0:00:01 --:--:-- 27777
n-install: ERROR:
  GNU Make not found, which is required for operation.
  On FreeBSD and PC-BSD, for instance, you can download it with `sudo pkg install gmake`.

gmakeをインストールして!と怒られました。
gmakeでなく、makeでも問題ないようなのでaptでインストール。

$ sudo apt install make
$ which make
/usr/bin/make

再度、n-install

$ curl -L https://git.io/n-install | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 39444  100 39444    0     0  27429      0  0:00:01  0:00:01 --:--:--  114k
n-install: ERROR:
  Aborting, because n and/or Node.js-related binaries are already
  in the $PATH:
         /mnt/c/Program Files (x86)/Nodist/bin/npm
  Please remove any existing n, Node.js installation, then try 
  again.

Windows用にインストールしたnpmがすでにあるから駄目って言われました。

一旦Windows用フォルダにパスが通らなくします。

$ export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

再度、n-install

$ curl -L https://git.io/n-install | bash
 :
 :
-- Installing the requested Node.js version(s)...
   1 of 1: lts...
  installing : node-v12.16.1
       mkdir : /home/seya/n/n/versions/node/12.16.1
       fetch : https://nodejs.org/dist/v12.16.1/node-v12.16.1-linux-x64.tar.xz
   installed : v12.16.1 (with npm 6.13.4)
=== n successfully installed.
  The active Node.js version is: v12.16.1
  Run `n -h` for help.
  To update n later, run `n-update`.
  To uninstall, run `n-uninstall`.
  IMPORTANT: OPEN A NEW TERMINAL TAB/WINDOW or run `. /home/seya/.bashrc`
             before using n and Node.js.
===

成功!!

Node.jsもnpmもインストールされているようです。

# PATHの優先度変更

.bashrcにパスの設定が追加されています。

export N_PREFIX="$HOME/n"; [[ :$PATH: == *":$N_PREFIX/bin:"* ]] || PATH+=":$N_PREFIX/bin"

これだと、Windows用のコマンドが先に見つかってしまうので変更します。

export N_PREFIX="$HOME/n"; PATH="$N_PREFIX/bin:$PATH"

# 確認

$ which n
/home/seya/n/bin/n
$ which node
/home/seya/n/bin/node
$ which npm
/home/seya/n/bin/npm
$ node -v
v12.16.1
$ npm -v
6.13.4

nodeのバージョン変更

$ n latest
  installing : node-v13.9.0
       mkdir : /home/seya/n/n/versions/node/13.9.0
       fetch : https://nodejs.org/dist/v13.9.0/node-v13.9.0-linux-x64.tar.xz
   installed : v13.9.0 (with npm 6.13.7)
$ node -v
v13.9.0
$ npm -v
6.13.7
$ n lts
   installed : v12.16.1 (with npm 6.13.4)
$ node -v
v12.16.1
$ npm -v
6.13.4

# npm install -g でインストールされる場所

$ npm bin -g
/home/seya/n/bin

# yarnのインストール

$ npm install -g yarn
/home/seya/n/bin/yarn -> /home/seya/n/lib/node_modules/yarn/bin/yarn.js
/home/seya/n/bin/yarnpkg -> /home/seya/n/lib/node_modules/yarn/bin/yarn.js
+ [email protected]
added 1 package in 0.516s
$ which yarn
/home/seya/n/bin/yarn

# yarn global add でインストールされる場所

$ yarn global bin
/home/seya/.yarn/bin

ここは、PATHが通らないので、.bashrcに以下追加

export PATH="$HOME/.yarn/bin:$PATH"