我们正在尝试在Amazon Elastic Beanstalk实例上安装节点模块oracledb
。
我们可以在本地使oracledb
正常工作,并且我们已经达到了Beanstalk实例通过rpms安装instantclient的程度。我们现在坚持的是npm install
期望使用LD_LIBRARY_PATH
或使instantclient进入/opt/oracle/instantclient
。目前,rpms将其安装到/usr/lib/oracle/12.1/client64
似乎有两种可能的解决方案:
/opt/oracle/instantclient
或移动/事后链接LD_LIBRARY_PATH
环境变量,以便npm install
知道使用/usr/lib/oracle/12.1/client64
但是,我们不知道如何在Beanstalk配置中正确地执行这些操作。
我找不到有关Beanstalk实例何时实际运行npm install
的任何信息,我们并没有明确告知它这样做,但它正在运行。
通过环境属性更改环境变量as the documentation suggests here 不起作用。看起来这些仅在服务器实际运行时设置
LD_LIBRARY_PATH=x node app.js
它们不用于npm install
。
我们如何更新弹性beanstalk配置,将instantclient置于我们想要的位置,或者在LD_LIBRARY_PATH
期间设置npm install?
答案 0 :(得分:1)
在Linux上安装node-oracledb v1时,安装会按以下顺序查找Oracle库:
请参阅https://github.com/oracle/node-oracledb/blob/master/INSTALL.md#linuxadv
您可以在https://github.com/oracle/node-oracledb/blob/master/binding.gyp
中看到执行此操作的逻辑因此问题的前提是不正确的,您不应该更改Instant Client。使用Instant Client RPM,运行&nbsp install oracledb'时不需要设置环境变量,也不需要在运行时设置LD_LIBRARY_PATH。上面的链接有详细信息。
问题是,您的安装失败了什么?
更新:使用node-oracledb v2,您需要设置ORACLE_HOME(仅适用于完整的Oracle安装)或使用LD_LIBRARY_PATH或使用ldconfig,如installation manual
中所述答案 1 :(得分:0)
选项1:在/ opt / oracle / instantclient /
下安装oracledb您可以尝试使用--prefix选项
更改rpm包的instalation文件夹 rpm --prefix=/opt/oracle/instantclient/ <oracledb_pack_name>.rpm
仅当包可重定位时才有效。您可以通过以下方式查看:
rpm -ql <oracledb_pack_name>.rpm
选项2:更改LD_LIBRARY_PATH
如customize-containers-format-commands
中所述您可以使用命令键在EC2实例上执行命令。这些命令按名称按字母顺序处理,并在设置应用程序和Web服务器并提取应用程序版本文件之前运行。
您可以尝试在配置文件LD_LIBRARY_PATH
部分中导出commands:
。这应该导出npm的env变量。类似的东西:
commands:
export-ld-lib:
command: export LD_LIB_PATH=//usr/lib/oracle/12.1/client64