CentOS 4.9(i386)で、Node.js v6.8.0をビルド

## 概要
- nodejsビルドに必要な、gcc-4.8.2関連のバイナリを用意した。(https://github.com/mt08xx/centos49_gcc482)
    - ビルド手順は基本的に、[前回](http://qiita.com/mt08/items/5e2c2366a5046d0cce4a)の記事。
- `/opt/tools346` に gcc-3.4.6でビルドしたもの(python-2.7.12, make-4.2.1など)
- `/opt/tools482` に、gcc-4.8.2に関連してるもの
- `/tools482 => /opt/tools482`へシンボリックリンク
- (追記) `node-v6.8.0.tar.xz`もguthubにあげました。<br>`xz-5.2.2` `glibc-2.11.3` `binutils-2.24-pass2` `gcc-4.8.2-pass2`を一緒に解凍すれば、うごくっぽい

## 環境
- Windows 10 64bit Host
- Vagrant 1.8.6
- Virtualbox 5.1.6
- vagrant box : mt08/centos49-i386

## 手順

### VM環境の準備
- git for windows, Vagrant, VirtualBox をインストール

=> https://github.com/mt08xx/centos49_gcc482 の"Prepare VM environment"


### VM起動

=> https://github.com/mt08xx/centos49_gcc482 の"Start VM on Windows"

1. `git bash`を管理者でひらく 
2. C:\Vagrant\centos49 を作業フォルダにする

...省略...

<!--

    ```bash
mkdir -p /c/vagrant/centos49
cd /c/vagrant/centos49
vagrant init mt08/centos49-i386 --minimal
```

3. Vagrantfileはこんなかんじ

    ```txt:Vagrantfile
Vagrant.configure("2") do |config|
      config.vm.box = "mt08/centos49-i386"
      config.vm.network "forwarded_port", guest: 80, host: 30080
      config.vm.network "forwarded_port", guest: 443, host: 30443
      config.vm.network "forwarded_port", guest: 3000, host: 33000
      config.vm.provider :virtualbox do |vb|
        vb.customize ["modifyvm", :id, "--memory", "4096", "--cpus", "2", "--ioapic", "on"]
      end
end
```

-->

### gcc-4.8.2 環境の導入
=> https://github.com/mt08xx/centos49_gcc482 の"Install gcc 4.8.2 Environment"

1. (ホスト) 管理者で git bash 開いて、作業フォルダに移動して、git clone

    ```bash
cd /c/vagrant/centos49
git clone https://github.com/mt08xx/centos49_gcc482.git
```
=> ゲストから、`ls -l /vagrant/centos49_gcc482/binary` でファイルが見れるはず。


2. (ゲスト)以下こぴぺ

    ```bash
#
sudo mkdir -p /opt/tools482 /opt/tools346 /var/log/porg
sudo chmod 777 -R /opt/tools482 /opt/tools346 /var/log/porg
sudo chown vagrant.vagrant /opt/tools482 /opt/tools346 /var/log/porg
sudo ln -svf  /opt/tools482 /
#
PATH=/opt/tools482/bin:/opt/tools346/bin:$PATH
grep /opt/tools482 .bashrc || echo 'PATH=/opt/tools482/bin:/opt/tools346/bin:$PATH' >> $HOME/.bashrc
#
tar zxvf /vagrant/centos49_gcc482/binary/porg-0.10.porg.tar.gz -C /
tar zxvf /vagrant/centos49_gcc482/binary/tar-1.29.porg.tar.gz -C /
hash -r
#
#
# Copy files
mkdir -p /tools482/include/
cp -rv /usr/include/* /tools482/include/
#
#
# Extract files
cd $HOME
DIR_WORK_PORGBALL=$HOME/work_porg
for f in xz-5.2.2 python-2.7.12 make-4.2.1 binutils-2.24-pass2  glibc-2.11.3 libstdc++-4.8.2 gcc-4.8.2-pass2 ; do echo $f
        rm -rfv $DIR_WORK_PORGBALL
        mkdir $DIR_WORK_PORGBALL
        porgball -e --root=$DIR_WORK_PORGBALL /vagrant/centos49_gcc482/binary/$f.porg.tar.*
        porg -lp $f "cp -r $DIR_WORK_PORGBALL/* /"
        rm -rf $DIR_WORK_PORGBALL
        hash -r
done
```

3. `gcc -v`で、4.8.2になってる？

    ```shell-session
[vagrant@localhost ~]$ gcc --version
gcc (GCC) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    [vagrant@localhost ~]$ 
```

### node.js v6.8.0のビルド
1. PATHの設定(`.bashrc`にかいてもいいかと)

    ```
PATH=/opt/tools482/bin:/opt/tools346/bin:$PATH
```
2. 以下、こぴぺ

    ```bash
export MAKEFLAGS='-j 3'
DIR_INST_482=/opt/tools482
DIR_WORK=$HOME/work
#
mkdir -p ${DIR_WORK}
cd ${DIR_WORK}
#
#
NODEJS_VER=6.8.0
wget --no-check-certificate https://nodejs.org/dist/v${NODEJS_VER}/node-v${NODEJS_VER}.tar.gz
tar zxf ./node-v${NODEJS_VER}.tar.gz
cd node-v${NODEJS_VER}
#
time { date > build.log ; \
     ./configure --prefix=${DIR_INST_482} 2>&1 | tee -a ./build.log ; \
    date > build.log ; \
    CC=${DIR_INST_482}/bin/i686-pc-linux-gnu-gcc make 2>&1 | tee -a ./build.log ;
    date >> ./build.log ; }
#
# porgでインストールファイルの管理
porg -lD -E $HOME:/tmp "CC=${DIR_INST_482}/bin/i686-pc-linux-gnu-gcc make install"
```

### テスト
1. ゲストのファイアウォールを切っておく。

    ```bash:ファイアウォール停止
sudo /etc/rc.d/init.d/iptables stop
sudo chkconfig iptables off
chkconfig --list iptables
```

    ```shell-session:実行例
[vagrant@localhost ~]$ sudo /etc/rc.d/init.d/iptables stop
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
[vagrant@localhost ~]$ sudo chkconfig iptables off
[vagrant@localhost ~]$ chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
```

2. nodeのexpress実行

    ```bash
DIR_WORK=$HOME/work
mkdir -p ${DIR_WORK}
cd ${DIR_WORK}
#
# node version
node -v
#
npm install -g express-generator
express myapp
cd myapp
npm install
DEBUG=myapp:* npm start
```

3. ホストのブラウザから、`http://localhost:33000`　をひらく。(agrantfileで、ホスト33000ポートをゲスト3000にポート転送するようにしてある)
=> Express  welcome to Expressと表示される