我们正在尝试安装 Node 模块 oracledb
在 Amazon Elastic Beanstalk 实例上。
我们可以让 oracledb
在本地正常工作,并且我们已经到了 Beanstalk 实例通过 rpms 安装 instantclient 的地步。我们现在坚持的是 npm install
期望使用 LD_LIBRARY_PATH
或 让 instantclient 在 /opt/oracle/即时客户端
。目前,rpms 将其安装到 /usr/lib/oracle/12.1/client64
似乎有两种可能的解决方案:
- 获取 rpm 以将 instantclient 安装到
/opt/oracle/instantclient
或在事后移动/链接它 - 设置
LD_LIBRARY_PATH
环境变量,以便npm install
知道使用/usr/lib/oracle/12.1/client64
/中的 instantclient
不过,我们不知道如何在 Beanstalk 配置中正确地完成这些事情。
我找不到任何关于 Beanstalk 实例何时实际运行 npm install
的信息,我们没有明确告诉它这样做,但它正在运行。
通过环境属性更改环境变量 as the documentation suggests here 不起作用。看似这些仅在服务器实际运行时设置,如
LD_LIBRARY_PATH=x node app.js
它们不用于 npm install
。
我们如何更新我们的弹性 beantalk 配置以将 instantclient 放在我们想要的地方或在 npm install 期间设置
LD_LIBRARY_PATH
?
最佳答案
在 Linux 上安装 node-oracledb v1 时,安装会按以下顺序查找 Oracle 库:
- 使用安装时环境变量 $OCI_LIB_DIR 和 $OCI_INC_DIR
- 安装了最高版本的 Instant Client RPM
- 在 $ORACLE_HOME 中
- 在/opt/oracle/instantclient
参见 https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv
您可以在 https://github.com/oracle/node-oracledb/blob/master/binding.gyp 中看到执行此操作的逻辑
所以问题的前提是不正确的,你不应该需要改变即时客户端。使用即时客户端 RPM,您不需要在运行“npm install oracledb”时设置环境变量,也不需要在运行时设置 LD_LIBRARY_PATH。上面的链接有详细信息。
问题是,您的安装失败的原因是什么?
更新:对于 node-oracledb v2,您确实需要设置 ORACLE_HOME(仅适用于完整的 Oracle 安装)或使用 LD_LIBRARY_PATH 或使用 ldconfig,如 installation manual 中所述
关于node.js - Elastic Beanstalk 上的环境变量/oracledb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436994/