kinalog

自称フロントエンドエンジニアが何か喚いています。

nodebrewでnode.jsをインストール

最近会社で暇。

先月は\休日に自宅でお仕事上等!/っていう感じだったが、今月は後半から非常に暇である。Rubyの本とか2日で半分読むぐらい暇。
まあいつまでも社内ニートしているわけにもいかないので、この機会に自分の知識と環境のアップグレードを図ってみる。

nodebrewを入れる

これまで入れていたnode.jsはhomebrew経由だったんだけど、これだとnode.js自体のバージョン管理はできない模様。そこで、最近流行っている(?)node.jsを管理するツールの「nodebrew」を入れてみることに。


まずはhomebrew版のnode.jsはアンインストール。

$ brew uninstall node


続いてnodebrewをインストール。

$ brew install nodebrew


適当にコマンド打ってバージョンやらヘルプやらが表示されたらインストール完了。

$ nodebrew
nodebrew 0.8.1

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install a <version> (compile from source)

・・・(以下略)


インストールが終わったら、パスを通しておく。

$ echo "export PATH=\$HOME/.nodebrew/current/bin:\$PATH" >> ~/.bashrc

これでnodebrewのインストールは完了。

nodebrewを使ってnode.jsをインストール

installコマンドを使って、最新の安定版をインストール。

$ nodebrew install stable


すごい時間かかった....んだけど、下記の記事を見ると、install-binaryコマンドを使うと早い?

qiita.com


インストール完了後、listコマンドを使うと

$ nodebrew list
v0.12.4

current: none

って表示される。

多分、使うバージョンを指定してないよーってことなので、useコマンドで使用するnode.jsのバージョンを指定してやる。

$ nodebrew use v0.12.4
use v0.12.4


この状態でまたlistコマンドを使ってやると

$ nodebrew list
v0.12.4

current: v0.12.4

っていう感じで、使うバージョンが設定できる。

node.jsを使ってみようとしたら・・・

node.jsを入れることができたので、さっそく

$ node -v

と入力して、動作確認をしようとしたところ・・・

-bash: node: command not found

ん???
でもさっきlistで確認したら、v0.12.4が入ってたよね?念の為にもう一度確認しても、やっぱり入っている。
ツール側では問題ないってことは、手動でやったパスを通すっていう作業に問題があるんじゃないかなーと思い立った。


そもそも「パスを通す」ってなんだろう

この手のツールを入れるときにたいていあるのが「パスを通す」っていう作業。
「.bash_profile」やら「.bashrc」やらに1行書き加えてやる作業なんだけど、これが何をやっているのか。


motw.mods.jp
上記のサイトを参照すると

みなさんは, Terminalを開いて, 何か設定をしなくても, 様々なコマンドを使うことができると思います.(ls, cat, echo, etc...) これらはどうして使えるというと, これらのファイルがある場所にPATHが通っているからなのです. つまり, PATHが通っているおかげで, 今いるディレクトリにそのファイルが存在しなくても参照できるのです.

つまり、

  • Terminalとかのコマンドは、実はPC内のどこかにある実行ファイルを動かしている。
  • 本来なら、ルートからのパスを正確に書いて実行してあげる必要があるけど、毎回毎回パス書くのめんどい!(たとえばlsコマンドだったら「/bin/ls」みたいに書く必要がある。)
  • そこで「パスを通す」=そのファイルがある場所を教えてあげることによって、コマンド実行時にわざわざパスを書いてあげる必要がなくなる。

っていうことらしい。

「.bashrc」と「.bash_profile」

で、さっき出てたエラーは「command not found」。
パスを通すための一文は書かれているのにnot foundってことは、設定自体を読み込めていないんだろうなと予想。


パスを通すときに設定を記載するファイルは2つあって、先ほどのサイトから引用すると

.bashrc ・・・ bashの起動時に毎回読み込まれる.
.bash_profile ・・・ ログイン次に読み込まれる.

という違いがある。さっき1行書き加えたのは「.bashrc」のほうなので、こっちが読み込まれてないってことなのか。
では読み込まれるようにするにはどうすればいいのか。

「.bashrc」を読み込ませる

黒い画面の環境構築メモ
https://gist.github.com/shokuto/4576386

上記のページによると

.bashrcにはパスは書き込まれているが、読み込まれていない感じ。どうも自動では読み込まない設定のようだ

ということらしいので、何もせずとも自動で読み込まれる「.bash_profile」の方に、下記を記述。

if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi


これができたらTerminalを再起動。
nodeのコマンドを入力して動作確認。

$ node -v
v0.12.4

(∩´∀`)∩できた!


インストールだけでかなり時間を取られてしまったけど、「パスを通す」ことについての勉強になった。