root ユーザの npm バージョンが異なるのを直す
Ubuntu 環境にて。
通常利用するユーザは Nodebrew を利用して、最新版の Node.js と npm を使うようにしている。しかし sudo
実行した時や root
ユーザに切り替えた時に、古いバージョンの Node.js や npm が利用されてしまい、上手く動かないスクリプトが出てきた。
よくよく状態を確認してみると、こうなっていた。
# 通常ユーザの場合
$ which node
/home/neo/.nodebrew/current/bin/node
$ which npm
/home/neo/.nodebrew/current/bin/npm
# sudo で root ユーザとして実行した場合
$ sudo which node
/usr/bin/node
$ sudo which npm
/usr/bin/npm
なんか root ユーザの .bashrc
とかで調整しても上手くいかなかったので、/usr/bin/node
と /usr/bin/npm
を Nodebrew のパスへのシンボリックリンクに変えてやった。
# 一応オリジナルのファイルは退避して残しておく
$ sudo mv /usr/bin/node /usr/bin/ORIG-node
$ sudo mv /usr/bin/npm /usr/bin/ORIG-npm
# シンボリックリンクを張る
$ sudo ln -s /home/neo/.nodebrew/current/bin/node /usr/bin/node
$ sudo ln -s /home/neo/.nodebrew/current/bin/npm /usr/bin/npm
ln
コマンドの順序を毎回間違えるのだが、Windows でエクスプローラ上から「ショートカットファイル」を作る時を考えると整理しやすい。すなわち、「どのファイルへのリンクを作りたいのか」という、Target の情報が一番最初に来ることになる。んで、そのショートカットファイルをどこに配備するか、というのが第2引数というワケ。
コレでとりあえずなんとかなった。