LoginSignup
13
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-01-02

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)
13
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
14