0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBMi node.jsのNative Addonモジュールをビルドする環境を構築してみた(chroot編)

Posted at

試した環境 OS: 7.3
前提 5733-OPSのライセンスが導入済み
CCSID(5035)で作業しています。記事中の「paseで実施」はcall qp2termコマンドでPASE環境に入っての作業を指します。

基本的にはここを参考にして実施したのですが、内容が少し古そうなので自分で作業したものを掲載します。

1)chrootユーザーの作成。

この記事では「YMURATA」というユーザーIDで作成してみます。適宜置き換えて下さい。

(qcmdで実施)
CRTUSRPRF USRPRF(YMURATA) PASSWORD() USRCLS(*SECOFR) CHRIDCTL(*JOBCCSID) TEXT('オープンソース用') CCSID(5035)
CHGUSRPRF USRPRF(YMURATA) HOMEDIR('/QOpenSys/ymurata')

一旦サインオフして、「YMURATA」でサインオン

(qcmdで実施)
MKDIR DIR('/QOpenSys/ymurata')  

再びサインオフして、「YMURATA」でサインオン。念のためWRKLNKコマンドでホームディレクトリが変わっていることを確認しておいて下さい。

2)chroot用の環境を作っていきます。

(paseで実施)
cd /QOpenSys/QIBM/ProdData/OPS/GCC  
./chroot_setup.sh chroot_minimal.lst /QOpenSys/ymurata
./chroot_setup.sh chroot_bins.lst /QOpenSys/ymurata
./chroot_setup.sh chroot_includes.lst /QOpenSys/ymurata
./chroot_setup.sh chroot_libs.lst /QOpenSys/ymurata
./chroot_setup.sh chroot_OPS_GCC.lst /QOpenSys/ymurata
./chroot_setup.sh chroot_OPS_SC1.lst /QOpenSys/ymurata

3)Node.js V6をインストールする

chroot_OPS_NODE.lstはv0.12.17がインストールされてしまうので、ここではV6をインストールします。
といっても、スクリプトを少し変えるだけです。

(paseで実施)
cp chroot_OPS_NODE.lst chroot_OPS_NODE_V6.lst
(qcmdで実施)
EDTF STMF('/QOpenSys/QIBM/ProdData/OPS/GCC/chroot_OPS_NODE_V6.lst')

最後の行に

:cp_dir
/QOpenSys/QIBM/ProdData/Node

とあるので、これを
/QOpenSys/QIBM/ProdData/OPS/Node6

に置き換えます。

実行します。

(paseで実施)
cd /QOpenSys/QIBM/ProdData/OPS/GCC  
./chroot_setup.sh chroot_OPS_NODE_V6.lst /QOpenSys/ymurata

なお、chroot_OPS_PYTHONもここでは実施しません。

4)必要なコマンド類をインストールする

上記まででchroot環境に入れるはずです。

(paseで実施)
chroot /QOpenSys/ymurata /QOpenSys/usr/bin/bsh

lsコマンドやpwdコマンドで確認してみて下さい。

(paseで実施)
cd /QOpenSys/QIBM/ProdData/OPS/GCC
./pkg_setup.sh pkg_perzl_bash-4.3.lst
./pkg_setup.sh pkg_perzl_gcc-4.8.3.lst
./pkg_setup.sh pkg_perzl_utils.lst

ここではwgetを利用してソフトを取得+インストールします。
IbmiがProxy配下にある場合は、次のファイルを修正して下さい。

(qcmdで実施)
EDTF STMF('/QOpenSys/ymurata/etc/wgetrc')

http_proxy =
ftp_proxy =
がありますので、適宜置き換えて下さい。
例)http_proxy = http://xxx.xxx.xxx.xxx:port番号/

5)Node環境整備

4)でbashが入りましたので、bashでchrootしてみます。
NodeのPATHを通します。

(paseで実施)
chroot /QOpenSys/ymurata /QOpenSys/usr/bin/bash
export PATH=$PATH:/QOpenSys/QIBM/ProdData/OPS/Node6/bin
(paseで実施)
node -v
v6.11.5

npm -v
module.js:471
    throw err;
Error: Cannot find module 'npmlog'
:
:

npmはエラーが出て実行できません。これを修正します。

(paseで実施)
cd /QOpenSys/QIBM/ProdData/OPS/Node6/bin
mv npm npm.original
ln -s ../lib/node_modules/npm/bin/npm-cli.js ./npm
npm -v
3.10.10

6)gmakeのインストール

(paseで実施)
gmake --version
gmake: *** virtual memory exhausted.   中止 .

エラーが出ますので、これを修正します。
wgetで必要なソフトをダウンロードし、rpmを使ってインストールします。
wget用のフォルダ「download」を作り、そこで作業します。

(paseで実施)
cd /
mkdir download
cd download
wget http://www.oss4aix.org/download/RPMS/make/make-4.2.1-1.aix5.3.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv make-4.2.1-1.aix5.3.ppc.rpm

proxy配下の場合、wget -e HTTP_PROXY=xxx.xxx.xxx.xxx:port番号 http://~として下さい。

(paseで実施)
export LIBPATH=$LIBPATH:/QOpenSys/usr/lib:/opt/freeware/lib
gmake --version
GNU Make 4.2.1

7)追加のソフトのインストール

pythin2.7とビルドに必要なgcc関係をインストールします。

(paseで実施)
wget http://www.oss4aix.org/download/RPMS/python/python-2.7.13-1.aix5.1.ppc.rpm
wget http://www.oss4aix.org/download/RPMS/python/python-libs-2.7.13-1.aix5.1.ppc.rpm
wget http://www.oss4aix.org/download/RPMS/python/python-tools-2.7.13-1.aix5.1.ppc.rpm
wget http://www.oss4aix.org/download/RPMS/gcc/libgcc-4.8.3-1.aix6.1.ppc.rpm
wget http://www.oss4aix.org/download/RPMS/gcc/libstdc++-4.8.3-1.aix6.1.ppc.rpm
wget http://www.oss4aix.org/download/RPMS/gcc/libstdc++-devel-4.8.3-1.aix6.1.ppc.rpm

rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv python-2.7.13-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv python-libs-2.7.13-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv python-tools-2.7.13-1.aix5.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libgcc-4.8.3-1.aix6.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libstdc++-4.8.3-1.aix6.1.ppc.rpm
rpm --ignoreos --ignorearch --nodeps --replacepkgs -hUv libstdc++-devel-4.8.3-1.aix6.1.ppc.rpm

8)確認

(paseで実施)
gcc --version  
 gcc (GCC) 4.8.3

python -V    
 Python 2.7.13

以上で終了です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?