nvmを使うまでの経緯
Debianでnodejsをインストールする際、
$ sudo apt-get install -y nodejs npm
としてやれば済むが、aptでインストールすると、実行コマンドが
$ node
ではなく、
$ nodejs
となり、npmでなんやかんやする際に
sh: 1: node: not found
と残念な結果に終わる
なんでDebianでこんな事になっているかというと
$ sudo apt-cache search node
node - Amateur Packet Radio Node program (transitional package)
nodejs - evented I/O for V8 javascript
既にnode
というコマンドが使われてたようで、nodejs
となったらしいです
で、じゃあどうするのがいいのと思って調べてみた結果、シンボリックリンクを貼ったり色々対処法はあったけど、nvm
を使うのが良さそうだったので、nvmでnodeをインストールする事にした
nvmのインストール
Manual Insallに書いてある通りにした
$ export NVM_DIR="$HOME/.nvm" && (
git clone https://github.com/creationix/nvm.git "$NVM_DIR"
cd "$NVM_DIR"
git checkout `git describe --abbrev=0 --tags --match "v[0-9]*" origin`
) && . "$NVM_DIR/nvm.sh"
$ echo 'export NVM_DIR="$HOME/.nvm"' >> $HOME/.bash_profile
$ echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"' >> $HOME/.bash_profile
$ source ~/.bash_profile
nvmの使い方メモ
// nodejsのバージョンを見る(ローカル)
$ nvm ls
// nodejsのバージョンを見る(リモート)
$ nvm ls-remote
// nodejsをインストール(最新版)
$ nvm install node
// nodejsをインストール(バージョンを指定)
$ nvm install node 6.9.1
// 使うバージョンをえらぶ(複数のバージョンをインストールした場合に使用)
$ nvm use 6.9.1
sudoでのnpmのグローバルインストールについて
npm install -g
でグローバルにインストールする場合、いつもPermission Errorとなるので、
$ sudo npm install -g [PACKAGE]
としていたが、nvmを使用した場合、sudoを使おうとすると、個々のユーザの.bash_profile
でしか環境変数が設定されていないので、
$ sudo npm install -g [PACKAGE]
npm: command not found.
となる。
sudoについて色々調べてみた結果、nvmを使用してnodeをインストールした場合、/home/[USER]/.nvm/versions/node/[VERSION]
にnodeがインストールされ、npm install -g
した際には、ここのlib/node_modules/[PACKAGE]
にインストールされる事になるので、結論としてsudoは不要という事だった
nvm use
でバージョンを切り替えた場合に参照先が変わるため再インストールしないといけないが、それは妥当な気がするのでよしとした
試しに、nvm use
でバージョンを切り替えて環境変数を確認してみた
// 7.0.0にしてみる
$ nvm use 7.0.0
Now using node v7.0.0 (npm v3.10.8)
$ env | grep node
NVM_PATH=/home/username/.nvm/versions/node/v7.0.0/lib/node
PATH=/home/username/.nvm/versions/node/v7.0.0/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin
NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
NVM_BIN=/home/username/.nvm/versions/node/v7.0.0/bin
// 6.9.1にしてみる
$ nvm use 6.9.1
Now using node v6.9.1 (npm v3.10.8)
$ env | grep node
NVM_PATH=/home/username/.nvm/versions/node/v6.9.1/lib/node
PATH=/home/username/.nvm/versions/node/v6.9.1/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/username/.local/bin:/home/username/bin
NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist
NVM_BIN=/home/username/.nvm/versions/node/v6.9.1/bin