0

我已经安装了 Oracle Instant Client 12.1.0.2.0,现在正在尝试使用以下命令为 R 安装 ROracle 1.3-1:

R CMD INSTALL --configure-args='--with-oci-lib=/usr/local/oracle/instantclient12 --with-oci-inc=/usr/local/oracle/instantclient12/sdk/include' ROracle_1.3-1.tar.gz

Oracle Instant Client 安装在 /usr/local/oracle/instantclient12

不幸的是,我在 ROracle 安装结束时遇到了以下错误,并且很难弄清楚出了什么问题:

** testing if installed package can be loaded
Error: package or namespace load failed for ‘ROracle’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/Library/Frameworks/R.framework/Versions/3.4/Resources/library/ROracle/libs/ROracle.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.4/Resources/library/ROracle/libs/ROracle.so, 6): Library not loaded: @rpath/libclntsh.dylib.12.1
Referenced from: /Library/Frameworks/R.framework/Versions/3.4/Resources/library/ROracle/libs/ROracle.so
  Reason: image not found
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/Library/Frameworks/R.framework/Versions/3.4/Resources/library/ROracle’

无论出于何种原因,无法找到 @rpath/libclntsh.dylib.12.1 并阻止 ROracle 完全安装。我尝试在 ~/lib 和 /usr/lib 中放置指向 libclntsh.dylib.12.1 的链接,但两个链接都不起作用。我还尝试使用环境变量 DYLD_FALLBACK_LIBRARY_PATH 和 DYLD_LIBRARY_PATH 指向包含 libclntsh.dylib.12.1 的目录,但这些都没有正常工作。

我正在使用 MacOS High Sierra (10.13) 和 R 3.4.2。

4

1 回答 1

0

到目前为止,我发现解决此问题的唯一方法是将 libclntsh.dylib.12.1 的链接放在 R 的框架 lib 目录中。在我的计算机上,R 框架 lib 目录位于/Library/Frameworks/R.framework/Resources/lib

我的即时客户端安装在/usr/local/oracle/instantclient12

所以我使用以下命令来制作文件链接:

ln -s /usr/local/oracle/instantclient12/libclntsh.dylib.12.1 /Library/Frameworks/R.framework/Resources/lib/libclntsh.dylib.12.1

这解决了 ROracle 安装问题,我现在可以毫无问题地在 R 中加载 ROracle 库。

于 2017-10-22T02:18:39.467 回答