技術記事については、Qiitaにも稀に投稿しています。

Homebrew経由でnodebrewをインストールし、Macのnode.jsを管理する

node_white

とある環境の構築時に、node.jsが必要になったのだけど、せっかくならバージョンの切り替えが容易に行えるnodebrewを使いたいと。

そこで、Macのパッケージ管理をしているHomebrew経由でnodebrewをインストールして、そこからnode.jsをインストールするのが綺麗だという結論に落ち着きました。

Homebrew経由でnodebrewをインストール

いつも通りのbrewコマンド

$ brew install nodebrew

==> Downloading http://github.com/hokaccha/nodebrew/archive/v0.9.5.tar.gz
==> Downloading from http://codeload.github.com/hokaccha/nodebrew/tar.gz/v0.9.5
######################################################################## 100.0%
==> /usr/local/Cellar/nodebrew/0.9.5/bin/nodebrew setup_dirs
==> Caveats
Add path:
  export PATH=$HOME/.nodebrew/current/bin:$PATH

To use Homebrew's directories rather than ~/.nodebrew add to your profile:
  export NODEBREW_ROOT=/usr/local/var/nodebrew

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
?  /usr/local/Cellar/nodebrew/0.9.5: 7 files, 36K, built in 4 seconds

PATHの追加

上記のコメント通り、.nodebrewへのPATHを.bash_profileまたは.bashrcに追記します。

$ vi ~/.bashrc

export PATH=$HOME/.nodebrew/current/bin:$PATH

で、再読み込みとバージョン確認で以下のようになれば成功

// 再読み込み
$ source ~/.bashrc

$ nodebrew -v

nodebrew 0.9.5

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install <version> (compile from source)
    nodebrew install-binary <version>     Download and install <version> (binary file)
    nodebrew uninstall <version>          Uninstall <version>
    nodebrew use <version>                Use <version>
    nodebrew list                         List installed versions
    nodebrew ls                           Alias for `list`
    nodebrew ls-remote                    List remote versions
    nodebrew ls-all                       List remote and installed versions
    nodebrew alias <key> <value>          Set alias
    nodebrew unalias <key>                Remove alias
    nodebrew clean <version> | all        Remove source file
    nodebrew selfupdate                   Update nodebrew
    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version
    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

Example:
    # install from binary
    nodebrew install-binary v0.10.22

    # use a specific version number
    nodebrew use v0.10.22

    # io.js
    nodebrew install-binary io@v1.0.0
    nodebrew use io@v1.0.0

nodebrewでstable(安定版)のnode.jsをインストール

もちろん任意のバージョン指定もできるし、そもそもどのような形式でインストールするかも選択できます。

  • nodebrew install-binary [version]
    コンパイル済みのバイナリからインストール
  • node brew install [version]
    ソースをコンパイルしてインストール

無論、コンパイル済みのバイナリからのほうが早いのでこちらを選択します。バージョンはnodebrew ls-allコマンドでインストール可能な、またはインストール済みのnode.jsのバージョンを確認できるのでそれを元にバージョン指定します。

今回は安定版(stable)をインストールしたいので、以下のようなコマンドを発行します。

$ nodebrew install-binary stable

Fetching: http://nodejs.org/dist/v6.2.0/node-v6.2.0-darwin-x64.tar.gz
Warning: Failed to create the file
Warning: /Users/xxxxx/.nodebrew/src/v6.2.0/node-v6.2.0-darwin-x64.tar
Warning: .gz: No such file or directory

curl: (23) Failed writing body (0 != 682)
download failed: http://nodejs.org/dist/v6.2.0/node-v6.2.0-darwin-x64.tar.gz

.nodebrewがNo such file or directiroy

ここで若干ハマったのですが、デフォルトでは.nodebrewディレクトリは作成されていないため、node.jsの解凍先がない、と。

当然ですが、nodeコマンドはまだ使えません。

$ node -v

-bash: node: command not found

.nodebrewディレクトリを作成する

手で作ってもよい、というような記事も見かけたけど、nodebrew setupで作れます。

$ nodebrew setup

Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

// 確認
$ cd .nodebrew;ls

completions default     node        src
current     iojs        nodebrew

改めて、stableをインストール

今度は成功するはずです。

$ nodebrew install-binary stable

Fetching: http://nodejs.org/dist/v6.2.0/node-v6.2.0-darwin-x64.tar.gz
######################################################################## 100.0%
Installed successfully

// 確認
$ node -v

-bash: node: command not found

そう、この時点ではまだnodeコマンド使えません。というのも、stable版のnode.jsをインストールしただけで「使用」の設定をしていないためです。

バージョン指定してnode.jsを「使う」

インストール済みのnode.jsを確認する

current: xxxの部分が現在使用中のバージョン。以下は未指定の状態となっています。

$ nodebrew list

v6.2.0

current: none

使用するバージョンを指定する

今回stableでインストールされたのはv6.2.0でした。

$ nodebrew use v6.2.0

use v6.2.0

確認

$ node -v

v6.2.0

以上でnode.jsが使えるようになりましたとさ。