RHEL(CentOS)6 环境下安装 node-oracledb

Background

最近准备升级一下 PROD 服务器上的node-oracledb版本. 但是遇到一个很奇怪的现象,就是我本地无法构建出服务器上可用的oracledb. (因为部署方式是打包部署而不是从git拉代码部署)

一开始以为是C++运行库的原因. 因为又仔细读了一遍node-oracledb的官方安装文档,发现oracledb在编译的时候,只支持支持C++11的编译器.

立马查看本地环境的gcc版本与运行库版本glibc

gcc -v
ldd --version

发现本地CentOS 6.6版本自带的gcc版本是 4.4,glibc版本是 2.12 但是支持编译和运行 C++11 新特性的gcc版本是 4.7+,glibc版本是 2.14+ 这.版本都不一样怎么玩.

RootCause

马上比较了一下 本地构建oracledb与服务器的各种版本发现相关的版本信息如下:

服务器 OS:RedHat Enterprise Linux 6.6 gcc Version:4.4 (Red Hat) glibc Version:2.12 node Version:v0.10.38 npm Version:1.4.28(npm 版本应该不会影响构建,预防万一还是提及一下) node-gyp Version:不明.因为没权限调用该命令. oracle instantclient Version:11.2

本地环境 OS:CentOS 6.7 x64 gcc Version:4.4 (Red Hat) glibc Version:2.12 node Version:v4.2.4 npm Version:2.14.8 node-gyp Version:3.2.1 oracle instantclient Version:11.2

Solution

思前想后,想想也不知道node.js本身版本到底会对oracledb的构建有什么影响. 毕竟oracledb官方对构建时的C++11编译支持的要求先入为主了

最后还是决定先切换一下node.js版本,结果问题顺利解决

$npm install n
$n v0.10.38
$npm install oracledb

构建成功.