如何通过命令行在 AWS centos6 上安装 node-oracledb 模块?

How to install node-oracledb module on AWS centos6 through command line?

我正在做一个项目,我希望基于 Node.js 的后端与 Oracle DB 通信,在 windows 系统上进行本地开发时,安装节点的先决条件并不困难- 这里提到的 oracledb 模块 https://community.oracle.com/docs/DOC-931127 但现在当我想为 centos6 安装相同的先决条件时,我遇到了问题。

先决条件列表,

  1. 支持 C++ 11 的 C 编译器。
  2. Python.
  3. Oracle Instant Client "basic" 和 "SDK" 包。

安装前两个并不困难,但找到 3 的 rpm 包是一项艰巨的任务。

注意:一切都必须使用命令行完成。

Oracle Instant Client 库目前无法通过 RPM 使用。作为解决方法,许多人以正常方式下载库,然后将它们放在可以通过网络访问的地方。然后他们使用像 curl 这样的命令行工具在需要时将它们拉入。

即时客户端 RPM 可用于 32-bit and 64-bit Linux. (The Instant Client home page is here。)由于 Centos 不是官方支持的 Linux,带有 RPM 的 YMMV。

如果 RPM 出于某种原因无法使用,请下载 Instant Client ZIP 文件,解压缩它们,然后创建符号 link ln -s libclntsh.so.12.1 libclntsh.so

Instant Client 库需要在 LD_LIBRARY_PATH 中,或者您可以使用类似以下的 ldconfig:

sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf"
sudo ldconfig

您还需要安装 OS libaio 软件包。在 RPM 上使用 yum 将自动引入此依赖项,或者您可以单独安装它。

经过所有的搜索和努力,我终于能够通过命令行在我的 Centos 系统上安装 oracledb。

请以 root 用户身份在命令行中执行以下步骤(假设 Python 已经安装):

1) 下载所需的 rpm Oracle 即时客户端程序包。

wget ftp://ftp.icm.edu.pl/vol/rzm6/linux-slc/centos/7.1.1503/cernonly/x86_64/Packages/oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm

wget ftp://ftp.icm.edu.pl/vol/rzm6/linux-slc/centos/7.0.1406/cernonly/x86_64/Packages/oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm

wget ftp://ftp.icm.edu.pl/vol/rzm6/linux-slc/centos/7.0.1406/cernonly/x86_64/Packages/oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

以上命令将为 oracle 即时客户端下载 rpm 包。

2) 安装下载的 rpm 包。

[~]: sudo rpm -ivh oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
Preparing...                ########################################### [100%]
   1:oracle-instantclient12.########################################### [100%]
[~]: sudo rpm -ivh oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
Preparing...                ########################################### [100%]
   1:oracle-instantclient12.########################################### [100%]
[~]: sudo rpm -ivh oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:oracle-instantclient12.########################################### [100%]

3) 下载 DevTools2 的 repo 文件,这是一个包含受支持的 C++11 编译器的 Red Hat 软件包。

wget http://people.centos.org/tru/devtools-2/devtools-2.repo -O /etc/yum.repos.d/devtools-2.repo

4) 安装编译器和支持工具。

yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

以上步骤将下载 Oracle 即时客户端、C++ 编译器和 DevTools2 编译器。现在是时候安装 oracledb 了。

在使用 DevTools2 编译器编译 C++11 代码之前,您需要在新的 shell:

中启用它
scl enable devtoolset-2 bash

现在,安装 oracledb

npm install oracledb

这将安装 oracledb。