Debian GNU/Linux で Node.js を使いたい。

しかし、 Debian の nodejs パッケージはセキュリティアップデートが受けられない、ということがわかった。
[ヅ] Debian jessie では Node.js のパッケージはセキュリティアップデートが受けられない (2015-05-02)

そのため、自前で Node.js をインストール&セキュリティアップデートできるよう、手軽にバージョン管理が可能な nodebrew を導入してみる。

今回の環境

Debian GNU/Linux 7.8 wheezy (jessie のひとつ前のバージョン)


$ cat /etc/debian_version
7.8

$ uname -mrsv
Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u1 x86_64

自分の Debian wheezy 環境には wheezy-backports の nodejs と libv8 パッケージがインストールされていたので、アンインストールしておく。


# aptitude remove --purge nodejs
以下のパッケージが削除されます:
  libc-ares2{pu} libv8-3.14.5{pu} nodejs

nodebrew のインストールと設定

公式サイトのドキュメント hokaccha/nodebrew · GitHub に従って、 nodebrew をインストール。


$ curl -L git.io/nodebrew | perl - setup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
100 22630  100 22630    0     0  11376      0  0:00:01  0:00:01 --:--:-- 89094
fetching nodebrew...
install nodebrew in $HOME/.nodebrew

========================================
Add path:

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

nodebrew の実行ファイルにパスを通す。 .bashrc の末尾に設定を追加。


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

.bashrc の末尾に設定が追加されたことを確認。


$ tail -1 ~/.bashrc
export PATH=$HOME/.nodebrew/current/bin:$PATH

.bashrc の設定を現在のシェルに反映。


$ source ~/.bashrc

nodebrew は、ホームディレクトリの .nodebrew/current/bin/nodebrew にインストールされている。


$ which nodebrew
/home/alice/.nodebrew/current/bin/nodebrew

nodebrew を実行する

パラメータ無しで実行するとヘルプが表示される。


$ nodebrew
nodebrew 0.8.1

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install a <version> (compile from source)
    nodebrew install-binary <version>     Download and install a <version> (binary file)
    nodebrew uninstall <version>          Uninstall a 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> <version>        Set alias to version
    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> 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 で複数の Node.js をインストールする

インストール可能な Node.js のバージョン一覧と、インストール済みのバージョンを表示する。


$ nodebrew ls-all
remote:
v0.0.1    v0.0.2    v0.0.3    v0.0.4    v0.0.5    v0.0.6
(中略)
v0.12.0   v0.12.1   v0.12.2

io@v1.0.0 io@v1.0.1 io@v1.0.2 io@v1.0.3 io@v1.0.4
(中略)
io@v1.8.1

local:
not installed

current: none

nodebrew では Node.js の複数のバージョンをインストールしておいて、必要に応じて切り替えることが可能。

安定版をインストールしてみる。


$ nodebrew install-binary stable
fetch: http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x64.tar.gz
######################################################################## 100.0%
Install successful

バージョン 0.10.29 をインストールしてみる。


$ nodebrew install-binary v0.10.29
fetch: http://nodejs.org/dist/v0.10.29/node-v0.10.29-linux-x64.tar.gz
######################################################################## 100.0%
Install successful

安定版のバージョン 0.12.2 を使うように設定。


$ nodebrew use 0.12.2
use v0.12.2

インストールした Node.js のバージョン一覧を確認。


$ nodebrew ls
v0.10.29
v0.12.2

current: v0.12.2

Node.js の node コマンドはホームディレクトリの .nodebrew/current/bin/ にインストールされている。


$ which node
/home/alice/.nodebrew/current/bin/node

$ node --version
v0.12.2

Node.js のパッケージマネージャーである npm コマンドもインストールされている。


$ which npm
/home/alice/.nodebrew/current/bin/npm

$ npm --version
2.7.4

簡単なサンプルプログラムを動かしてみる

npm で request パッケージをインストール。


$ npm install request

サンプルプログラムを書く。


$ cat sample.js

var request = require('request');
request.get(
  'http://www.nilab.info/lab/0/sample_json.json',
  function(error, response, body){
    console.log(response.statusCode);
    console.log(body);
  }
);

サンプルプログラムを実行。ちゃんと動いている。


$ node sample.js
200
{
  "foo" : "bar",
  "text" : [
    "hello",
    "こんにちは",
    "good bye",
    "さようなら"
  ]
}

参考資料

tags: nodejs debian nodebrew

Posted by NI-Lab. (@nilab)