我正在尝试在unix盒子上安装ROracle包。 包正确安装。但是库(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没有正确获取路径值的问题。
答案 0 :(得分:6)
似乎问题是由$ LD_LIBRARY_PATH环境变量未以系统范围的方式设置引起的。与其他环境变量不同, $ LD_LIBRARY_PATH需要特殊处理(请参阅Ubuntu Help page并搜索 ld.so.conf.d )
我能够通过按comment 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")
它应该可以工作。
答案 1 :(得分:2)
我遇到了完全相同的问题,我刚刚解决了这个问题,这要归功于与一些非常友善和乐于助人的Oracle人员的会议。
我们需要在/etc/rstudio/rserver.conf
文件中包含以下行(by default is empty):
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桌面......
有关详细信息,请参阅here(虽然它指的是Oracle R Enterprize,但它也适用于vanilla R)。