无法加载ROracle:无法加载共享对象ROracle.so:libclntsh.so.11.1没有这样的文件或目录

时间:2013-02-14 18:56:04

标签: oracle r rstudio

所以我无法加载ROracle。我确实对此非常陌生,所以任何信息都会受到赞赏,并且有关提供更多信息的任何信息也会有所帮助。

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

ROracle.so就在它所说的位置。 libclntsh.so.11.1可以在/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1找到。这是.libPaths

的结果
> .libPaths()
[1] "/home/nguiller/R/x86_64-pc-linux-gnu-library/2.14" "/usr/local/lib/R/site-library"                     "/usr/lib/R/site-library"                          
[4] "/usr/lib/R/library"                                "/usr/lib/rstudio/R/library" 

我的.Renviron文件

LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib:/home/nguiller/Downloads/instantclient_11_2"
ORACLE_HOME="/usr/lib/oracle/11.2/client64/:/home/nguiller/Downloads/instantclient_11_2"
OCI_LIB="/usr/lib/oracle/11.2/client64/lib"

由于OCI库,我在安装ROracle时遇到了很多麻烦,但它最终与R CMD INSTALL --configure-ags='--with-oci-lib=/usr/lib/oracle/11.2/client64/lib --with-oci-inc=/usr/include/oracle/11.2/client64' ROracle_1.1-8.tar.gz一起使用

请告诉我如何提供帮助。

5 个答案:

答案 0 :(得分:2)

ORACLE_HOME应该指向一个位置。你不应该设置LD_LIBRARY_PATH_64变量吗?

答案 1 :(得分:0)

我在加载"库(ORE)"

时遇到了同样的错误
bash-4.1$ pwd
/usr/lib64/R/library
bash-4.1$ grep -irsh "libclntsh.so.11.1" *
Binary file ROracle/libs/ROracle.so matches

看起来共享对象ROracle.so指的是libclntsh.so.11.1而不是libclntsh.so.12.1

$ cd /scratch/softwares/R/db_instant_client/instantclient_12_1

 ln -s libclntsh.so.12.1 libclntsh.so.11.1

作为一种解决方法,我创建了一个符号链接,因此libclntsh.so.12.1可以称为libclntsh.so.11.1。

template<typename T>
struct static_const
{
    static constexpr T value {};
};

template<typename T>
constexpr T static_const<T>::value;

完成此步骤后,我可以成功加载库(ORE)。

有关详细信息,请参阅my website

答案 2 :(得分:0)

设置$ LD_LIBARARY_PATH = $ ORACLE_HOME / lib

答案 3 :(得分:0)

如果你真的真的想在R环境中这样做,可以按如下方式加载特定的库:

dyn.load("/usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1")
library(ROracle)

参考文献:

Setting LD_LIBRARY_PATH from inside R

答案 4 :(得分:0)

/etc/rstudio/rserver.conf

中设置此项
rsession-ld-library-
path=/usr/lib64/R/lib:/home/oracle/app/oracle/product/12.1.0/client_1/lib

然后重启Rserver

sudo rstudio-server stop
sudo rstudio-server start

这帮助了我。