failing to load ROracle: unable to load shared obj

2019-02-18 09:26发布

问题:

So I can't load ROracle. I am indeed very new to this so any information is appreciated and any info regarding what further information to give would be helpful as well.

> 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 is exactly where it says it is. libclntsh.so.11.1 can be found at /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1. This is the result of .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" 

My .Renviron file

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"

I had a lot of trouble installing ROracle to begin with due to OCI libraries but it eventually worked with 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

Let me know how I can help.

回答1:

ORACLE_HOME should point to just one location. Shouldn't you set LD_LIBRARY_PATH_64 variable?



回答2:

set $LD_LIBARARY_PATH=$ORACLE_HOME/lib



回答3:

If you really really really want to do this within the R environment, you can load the specific library as follows:

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

References:

Setting LD_LIBRARY_PATH from inside R



回答4:

I got same error while loading "library(ORE)"

  Error in dyn.load(file, DLLpath = DLLpath, ...) :
      unable to load shared object '/usr/lib64/R/library/ROracle/libs/ROracle.so':
      libclntsh.so.11.1: cannot open shared object file: No such file or directory
    Error: package 'OREdm' could not be loaded

Looks like the shared object ROracle.so is referring to libclntsh.so.11.1 instead of libclntsh.so.12.1

bash-4.1$ pwd
/usr/lib64/R/library
bash-4.1$ grep -irsh "libclntsh.so.11.1" *
Binary file ROracle/libs/ROracle.so matches

As a work around, I have created a symlink, so that libclntsh.so.12.1 can be referred as libclntsh.so.11.1.

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

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

After this step, I am able to load library(ORE) successfully.

Please see my website for more details.



回答5:

Set this in /etc/rstudio/rserver.conf

rsession-ld-library-
path=/usr/lib64/R/lib:/home/oracle/app/oracle/product/12.1.0/client_1/lib

Then restart Rserver

sudo rstudio-server stop
sudo rstudio-server start

This helped me.



标签: oracle r rstudio