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引数というワケ。

コレでとりあえずなんとかなった。