8

我正在尝试在 unix 机器上安装 ROracle 包。该软件包已正确安装。但是 library(ROracle) 无法正常工作并出现错误

library(ROracle)
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
unable to load shared object '/u01/group1/home/oracle/R/x86_64-redhat-linux-gnu-library/3.1/ROracle/libs/ROracle.so':
libclntsh.so.11.1: cannot open shared object file: No such file or directory
Error: package or namespace load failed for ‘ROracle’

该软件包可以从命令行正常安装,但在 R studio 中不起作用。我在论坛中浏览了很多线程,其中很多人建议导出 LD_LIBRARY_PATH 并重置它。事实上,我继续将所有 R 系统变量从命令行复制到 R Studio 中。但它仍然不能正常工作。

我还注意到的一件事是,每次我重新启动 R Studio 时,R 系统变量都会发生变化。可能是 R studio 没有正确获取路径值的问题。

4

2 回答 2

13

似乎问题是由 $LD_LIBRARY_PATH 环境变量未以系统范围的方式设置的。与其他环境变量不同,$LD_LIBRARY_PATH 需要特殊处理(请参阅Ubuntu 帮助页面并搜索ld.so.conf.d

我可以通过按照评论 15设置 $LD_LIBRARY_PATH 来解决这个问题:

echo "/usr/lib/oracle/11.2/client64/lib" | sudo tee /etc/ld.so.conf.d/oracle.conf

将 echo 语句更改为存储 Oracle Instant Client 库的位置。(我的可以通过运行找到echo $OCI_LIB

然后更新缓存:

sudo ldconfig -v

然后打开 RStudio,执行library("ROracle")它应该可以工作。

于 2016-04-24T11:30:55.613 回答
3

我遇到了完全相同的问题,感谢与一些非常友善和乐于助人的 Oracle 人员举行的会议,我刚刚解决了这个问题。

我们需要在/etc/rstudio/rserver.conf文件中包含以下行(默认为空):

rsession-ld-library-path=/usr/lib64/R/lib:/u01/app/oracle/product/12.1.0.2/dbhome_1/lib

即 R & Oracle 主目录:

$ echo $R_HOME
/usr/lib64/R
$ echo $ORACLE_HOME
/u01/app/oracle/product/12.1.0.2/dbhome_1

修改配置文件后必须重启 RStudio 服务器。

我只用 RStudio 服务器检查过这个,所以不确定 RStudio Desktop 是否也需要它......

有关详细信息,请参见此处(虽然它指的是 Oracle R Enterprise,但它也适用于 vanilla R)。

于 2015-10-30T10:05:44.643 回答