Ubuntu
nodejs
ndenv

node.js のバージョン管理ツール ndenv を試した

More than 3 years have passed since last update.

Ubuntu にバンドルされている Node.js で利用すると、バージョンを自由に選べない。Googleで調べたらndenv という pyenv や rbenv に良く似たツールがあったので使ってみた。

参照サイト GitHub riywo/ndenv https://github.com/riywo/ndenv


作業ディレクトリ

一般ユーザーのホームディレクトリにインストールします。 いろいろ共存です。

tkr@tkr02:~$ ls -la

合計 64
drwxr-xr-x 9 tkr tkr 4096 1月 2 11:17 .
drwxr-xr-x 3 root root 4096 1月 2 07:58 ..
-rw------- 1 tkr tkr 1903 1月 2 18:15 .bash_history
-rw-r--r-- 1 tkr tkr 220 1月 2 07:58 .bash_logout
-rw-rw-r-- 1 tkr tkr 152 1月 2 08:32 .bash_profile
-rw-r--r-- 1 tkr tkr 3637 1月 2 07:58 .bashrc
drwx------ 3 tkr tkr 4096 1月 2 08:23 .cache
drwx------ 2 tkr tkr 4096 1月 2 09:15 .emacs.d
drwxrwxr-x 3 tkr tkr 4096 1月 2 09:08 .gem
-rw-r--r-- 1 tkr tkr 675 1月 2 07:58 .profile
drwxrwxr-x 12 tkr tkr 4096 1月 2 08:30 .pyenv
drwxrwxr-x 12 tkr tkr 4096 1月 2 08:43 .rbenv
-rw------- 1 tkr tkr 174 1月 2 08:47 .softlayer
drwxr-xr-x 2 tkr tkr 4096 1月 2 08:02 .ssh
drwxr-xr-x 2 root root 4096 1月 2 11:16 .vim
-rw------- 1 tkr tkr 2297 1月 2 11:17 .viminfo


GitHub からツールをクローン

tkr@tkr02:~$ git clone https://github.com/riywo/ndenv ~/.ndenv

Cloning into '/home/tkr/.ndenv'...
remote: Counting objects: 63, done.
remote: Total 63 (delta 0), reused 0 (delta 0), pack-reused 63
Unpacking objects: 100% (63/63), done.
Checking connectivity... done.


ログインシェルに設定を追加

tkr@tkr02:~$ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bash_profile

tkr@tkr02:~$ echo 'eval "$(ndenv init -)"' >> ~/.bash_profile
tkr@tkr02:~$ exec $SHELL -l
tkr@tkr02:~$ ndenv -v
ndenv 0.4.0-4-ga339097


GitHub から node-build をクローン

tkr@tkr02:~$ git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build

Cloning into '/home/tkr/.ndenv/plugins/node-build'...
remote: Counting objects: 68, done.
remote: Total 68 (delta 0), reused 0 (delta 0), pack-reused 68
Unpacking objects: 100% (68/68), done.
Checking connectivity... done.


導入可能なバージョンをリストする

tkr@tkr02:~$ ndenv install -l

Available versions:
v0.1.14
v0.1.15
中略
v0.12.4
v0.12.5
v0.12.6
v0.12.7
v0.12.8
v0.12.9
中略
iojs-v3.2.0
iojs-v3.3.0
iojs-v3.3.1
中略


バージョンを指定してインストール

最後におまじないの rehash を忘れない様にとね。

tkr@tkr02:~$ ndenv install v0.12.9

Downloading node-v0.12.9-linux-x64.tar.gz...
-> https://nodejs.org/dist/v0.12.9/node-v0.12.9-linux-x64.tar.gz
Installing node-v0.12.9-linux-x64...
Installed node-v0.12.9-linux-x64 to /home/tkr/.ndenv/versions/v0.12.9
tkr@tkr02:~$ ndenv rehash


導入されているか確認

tkr@tkr02:~$ ndenv versions

v0.12.9
tkr@tkr02:~$ ndenv global v0.12.9
tkr@tkr02:~$ node -v
v0.12.9


テストぺージ作成


FWの設定追加

OSファイアウォールに TCP/8080 を開く様に設定

tkr@tkr02:~$ sudo -s

root@tkr02:~# ufw allow 8080
ルールを追加しました
ルールを追加しました (v6)
root@tkr02:~# ufw status
状態: アクティブ

To Action From
-- ------ ----
Anywhere ALLOW 10.0.0.0/8
80 ALLOW Anywhere
1883 ALLOW Anywhere
8080 ALLOW Anywhere
80 (v6) ALLOW Anywhere (v6)
1883 (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)


httpサーバーのコード

HTTPサーバーの最も簡単なコードを作成します。


server.js

var http = require('http');

http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8080, '0.0.0.0');


node.js上で httpサーバーの実行

上記で作ったコードをnodeコマンドの引数に与えて実行します。簡単にHTTPサーバーができてるので、ちょっとビックリ!

tkr@tkr02:~$ node server.js 


ブラウザからの確認

IPアドレスかドメイン名でアクセスして確認します。 Hello World が表示されていれば成功です。

firefox.png


npmも使ってみる

tkr@tkr02:~$ npm install mqtt --save

> utf-8-validate@1.2.1 install /home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild

make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate/build' に入ります
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/obj.target/validation.node
COPY Release/validation.node
make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/utf-8-validate/build' から出ます

> bufferutil@1.2.1 install /home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild

make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil/build' に入ります
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/obj.target/bufferutil.node
COPY Release/bufferutil.node
make: ディレクトリ `/home/tkr/node_modules/mqtt/node_modules/websocket-stream/node_modules/ws/node_modules/bufferutil/build' から出ます
mqtt@1.6.3 node_modules/mqtt
├── inherits@2.0.1
├── reinterval@1.0.2
├── xtend@4.0.1
├── minimist@1.2.0
├── commist@1.0.0 (leven@1.0.2)
├── readable-stream@1.0.33 (isarray@0.0.1, string_decoder@0.10.31, core-util-is@1.0.2)
├── end-of-stream@1.1.0 (once@1.3.3)
├── mqtt-packet@3.4.4 (bl@0.9.4)
├── help-me@0.1.0 (pump@1.0.1)
├── mqtt-connection@2.1.1 (through2@0.6.5, reduplexer@1.1.0)
├── concat-stream@1.5.1 (typedarray@0.0.6, readable-stream@2.0.5)
└── websocket-stream@2.3.0 (through2@2.0.0, duplexify@3.4.2, ws@0.8.1)