ROracle在R Studio中无法工作

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没有正确使用路径值的问题吗?


它在RStudio中不起作用,但在控制台中的原始R中可以工作? - Roman Luštrik
是的,Roman。你是对的。 - user40465
我有另一个想法。为什么这被标记为rstudio-server?你是通过服务器访问R还是直接访问? - Roman Luštrik
我遇到了同样的问题。你在Rstudio上能解决它吗? - user1525721
我在CentOS中遇到了完全相同的问题 - 在RStudio中所有“常见嫌疑人”环境变量看起来都是正确的(LD_LIBRARY_PATH,ORACLE_HOME,ORACLE_SID)。 - desertnaut
请参见 https://dev59.com/GG7Xa4cB1Zd3GeqPqHva dyn.load("/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1"); library(ROracle) - chinsoon12
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"),应该就能正常工作了。


Josh Gilfilla,我发现你的回答非常有帮助。对于管理与 Oracle 接口的基于 Debian 的系统的人来说,我强烈建议阅读有关共享库的以下文档:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html。 - Zerodf
@Zerodf,很高兴能帮到您。有没有可能点个赞? :) - Josh Gilfillan

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桌面版是否也需要重新启动...

有关详细信息,请参见此处(虽然它是针对Oracle R企业版的,但也适用于普通的R)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接