原文はこちら。
https://blogs.oracle.com/opal/entry/getting_a_c_11_compatible
Node.js 4以後でnode-oracledbのようなadd-onを使う場合、Oracle Linux 6ではより新しいコンパイラが必要です。
Software Collection Library (SCL)から入手するのが最も簡単に新しいコンパイラを入手する一番簡単な方法です。
その他の方法として、ULN(Unbreakable Linux Network)サポート・サブスクリプションをお持ちであれば、linux.oracle.comの「Manage Subscription 」ページにあるOracle Software Collections 1.2 for Oracle Linux 6 チャネルをサブスクライブすることができます。
https://blogs.oracle.com/opal/entry/getting_a_c_11_compatible
Node.js 4以後でnode-oracledbのようなadd-onを使う場合、Oracle Linux 6ではより新しいコンパイラが必要です。
node-oracledbこれは、Node.js 4以後のadd-onではC++11互換のコンパイラを使ってビルドする必要があるためです。
https://www.npmjs.com/package/oracledb
#if NODE_MODULE_VERSION >= IOJS_3_0_MODULE_VERSION && !NAN_HAS_CPLUSPLUS_11Oracle Linux 6のデフォルトコンパイラではC++11互換をサポートしていません。Oracle Linux 7ではC++11互換をサポートしていますので、以下の手順はOracle Linux 7では実施する必要はありません。
https://github.com/nodejs/nan/blob/v2.2.1/nan.h#L40
Software Collection Library (SCL)から入手するのが最も簡単に新しいコンパイラを入手する一番簡単な方法です。
Software Collection Library (SCL)Software Collectionをyumチャネルで有効化し、yum installを実行すると、コンパイラがすぐに利用可能になります。SCLの設定、手順などは以下のドキュメントに記載があります。
http://yum.oracle.com/repo/OracleLinux/OL6/SoftwareCollections12/x86_64/index.html
Software Collection Library 1.2 for Oracle® Linux Release Notes以下は、node-oracledbをOracle Linux 6上で動作するNode.js 4以後にインストールする方法です。
Installing the Software Collection Library Utility from Oracle Public Yum
https://docs.oracle.com/cd/E37670_01/E59096/html/section_e3v_nbl_cr.html
Enabling the Software Collection Library
yum.oracle.com(以前はpublic-yum.oracle.comとしても知られていました)をお使いの場合、/etc/yum.repos.d/public-yum-ol6.repoを編集し、ol6_software_collectionsチャネルを有効化する必要があります。Oracle Linux Yum Server
http://yum.oracle.com/
必要であれば、[ol6_software_collections]
name=Software Collection Library release 1.2 packages for Oracle Linux 6 (x86_64)
baseurl=http://yum.oracle.com/repo/OracleLinux/OL6/SoftwareCollections12/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1
http://yum.oracle.com/public-yum-ol6.repo
から最新のチャネルリストを取得し、アップデートを既存の /etc/yum.repos.d/public-yum-ol6.repo
ファイルにマージすることもできます。その他の方法として、ULN(Unbreakable Linux Network)サポート・サブスクリプションをお持ちであれば、linux.oracle.comの「Manage Subscription 」ページにあるOracle Software Collections 1.2 for Oracle Linux 6 チャネルをサブスクライブすることができます。
Installing the Updated Compiler
チャネルを有効化したら、以下のコマンドでアップデートされたコンパイラをインストールします。このコマンドにより、完全な、更新されたツールセットを構成する数多くのパッケージがインストールされます。yum install scl-utils devtoolset-3
Installing node-oracledb
Node.js 4以後へのnode-oracledbのインストール手順は以下のインストール手順と変わりありませんが、新しいコンパイラを使う必要があります。Installing node-oracledbOracle Linuxのドキュメントに開発ツールセットを有効化する様々な方法が記載されています。
https://github.com/oracle/node-oracledb/blob/master/INSTALL.md
Software Collection Library 1.2 for Oracle® Linux Release Notesまとめると、Oracle Linux 6とNode.js 4以後の組合せでnode-oracledbをインストールするためには、まずInstant ClientのようなOracleクライアントをインストールする必要があります。
Using the Software Collection Version of a Command
https://docs.oracle.com/cd/E37670_01/E59096/html/section_ksc_t2f_dq.html
Instant Client Downloads for Linux x86-64Instant Client RPMパッケージ以外のものがある場合、ライブラリやヘッダファイルの在処をインストーラに伝える必要があります。以下はその例です。
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
ファイアウォールで守られている場合には、プロキシサーバの設定をしておきましょう。export OCI_LIB_DIR=$HOME/instantclient
export OCI_INC_DIR=$HOME/instantclient/sdk/include
筆者の開発環境では、クリーンアップを何度かするとよい感じです。export http_proxy=http://my.proxy.example.com:80/
ようやく新しいコンパイラを使ってnode-oracledbをインストールすることができます。which npm && rm -rf $(npm root)/oracledb $(npm root)/nan $HOME/.node-gyp $HOME/.npm && npm cache clean
scl enable devtoolset-3 -- npm install oracledb
Using Node
これで、Nodeを使うことができるようになります。$ node version.js
node.js version: v4.4.3
node-oracledb version: 10900
node-oracledb text format: 1.9.0
oracle client library version: 1201000200
oracle client library text format: 12.1.0.2.0
oracle database version: 1201000200
oracle database text format: 12.1.0.2.0
$ cat /etc/oracle-release
oracle linux server release 6.7