IBMi　node.jsのNative Addonモジュールをビルドする環境を構築してみた（Node Ver8編）

yumやnode.jsのVer8がIbmiで稼働する方法を紹介します。
[このページ](https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/RPMs%20-%20Getting%20Started/comment/90c103de-56ae-4b20-9de3-74d871b9aa60)を参考にしました。まだベータ版のようですが、インストール自体は非常に簡単です。

試した環境　OS: 7.3
5733-OPSが必要かどうか記載が無いため分かりませんでした。試した環境には導入済みです。
CCSID(5035)で作業しています。

### 1)インストール
オンラインインストールとオフラインインストールが可能です。私はオフラインで試しました。

「bootstrap.sh」と「bootstrap.tar.Z」を自分のPCでダウンロードします。
何らかの手段で「 /tmp 」にアップロードします。
5250ターミナルから

```
QSH CMD('touch -C 819 /tmp/bootstrap.log; /QOpenSys/usr/bin/ksh /tmp/bootstrap.sh > /tmp/bootstrap.log 2>&1')
```
を実行します。

![01.JPG](https://qiita-image-store.s3.amazonaws.com/0/146069/f5a68f9c-84a7-1ff1-5287-371959c91f5a.jpeg)

/QOpenSys/pkgs　にインストールされますので、/QOpenSys/pkgs/binにPATHを通してください。

### 2)yumが使えるか確認
PASE環境でyumが使えるようになっているはずです。以下全てPASE環境で実施しています。

![02.JPG](https://qiita-image-store.s3.amazonaws.com/0/146069/2e9d65dd-ef24-0c7f-c37e-19a8cc9e7b68.jpeg)

検索してみます。

```
yum search node
```
![03.JPG](https://qiita-image-store.s3.amazonaws.com/0/146069/c6355264-5059-55d2-81e5-14527e756c22.jpeg)

IBMiがProxy配下の場合、以下の環境変数が必要でした。

```
http_proxy=http://XXX.XXX.XXX.XXX:ポート番号/
https_proxy=http://XXX.XXX.XXX.XXX:ポート番号/
ftp_proxy=http://XXX.XXX.XXX.XXX:ポート番号/
export http_proxy
export https_proxy
export ftp_proxy
```

### 3)インストール
node.jsとNative Addonモジュールをビルドする環境を構築して行きます。
node-gypはpython2.7系が必要なので、ここではpython2を入れます。

```
yum install nodejs8.ppc64
yum install gcc-aix libstdcplusplus-devel
yum install make-gnu.ppc64 
yum install python2.ppc64 python2-devel.ppc64
```
※2018/6/21現在で、「yum group install 'Development Tools'」で出来るとの記載がありました。
私が試した時にはこの記載がなかったので、上記で実施しています。

### 4)確認
nodeが使えるようにセットアップします。

```
/QOpenSys/pkgs/bin/nodever 8
```

```
node -v
　v8.10.0
npm -v
　5.6.0
gcc --version
　gcc.bin (GCC) 6.3.0
python -V
　exec(): 0509-036以下のエラーが発生したために、プログラムpythonをロードできません・・
```
![04.JPG](https://qiita-image-store.s3.amazonaws.com/0/146069/19c90723-f545-5326-cafb-b12b5166a251.jpeg)

pythonが動かないので、これを直します。

```
cd /QOpenSys/pkgs/bin
ln -s python2.7 ./python
python -V
　Python 2.7.14
```

### 5)Node.js Ver8のドライバーの入手
[ここ](https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/The%20new%20idb-connector%20and%20itoolkit/comment/8a5d4e09-7408-4e85-8637-e67ae357243f)に記載があります。

適当なディレクトリを作り、npm init -yで初期化した後に、

```
PATH=/QOpenSys/pkgs/bin:/QOpenSys/pkgs/lib/nodejs8/bin:$PATH
export PATH
npm install idb-connector
```
私の環境ではエラーでビルド出来ませんでした。
エラーの内容を見てみると

```
In file included from ../src/db2ia/db2ia.cc:5:0:../src/db2ia/dbconn.h:11:20: fatal error: sqlcli.h: No such file or directory
```
sqlcli.hが無い、と言っています。
QSYSINC/H(SQLCLI)にありました。こんなところにあるのですね・・・
![05.JPG](https://qiita-image-store.s3.amazonaws.com/0/146069/ed2b1570-4fa8-d1f1-7602-3c2ad0e8e0bc.jpeg)

これを取り込みます。
※なお、他にも必要なファイルがありますので一緒に取り込みます。

```
qsh_out -c 'cat /qsys.lib/qsysinc.lib/h.file/sqlcli.mbr' > /usr/include/sqlcli.h
qsh_out -c 'cat /qsys.lib/qsysinc.lib/h.file/sql.mbr' > /usr/include/sql.h
qsh_out -c 'cat /qsys.lib/qsysinc.lib/h.file/sqlsystm.mbr' > /usr/include/sqlsystm.h
qsh_out -c 'cat /qsys.lib/qsysinc.lib/h.file/sqludf.mbr' > /usr/include/sqludf.h
```

これでビルド出来ました。
itoolkit用もあります。こちらは問題無くインストール出来ました。

```
npm install itoolkit
```

使い方ですが、

```
var db = require('idb-connector');
```
に変えるだけでそのままVer6用のソースが動きます。
Ver6用のソースがある方は試してみて下さい。

余談
yarnも使えます。

```
yarn -v
　1.7.0
```