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でインストールしたものが表示されるが、あとでなんとかする。)
# 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"