не удается загрузить ROracle: невозможно загрузить общий объект ROracle.so: libclntsh.so.11.1 Нет такого файла или каталога

Поэтому я не могу загрузить 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"

У меня было много проблем с установкой ROracle с самого начала из-за библиотек OCI, но в итоге он заработал с 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

Дайте мне знать, как я могу помочь.


person Nils Guillermin    schedule 14.02.2013    source источник


Ответы (5)


ORACLE_HOME должен указывать только на одно местоположение. Разве вы не должны установить переменную LD_LIBRARY_PATH_64?

person igr    schedule 14.02.2013
comment
Это сработало после того, как я экспортировал переменные env (.Renviron, похоже, не работает). Большое спасибо! export LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib:/home/nguiller/Downloads/instantclient_11_2" && export ORACLE_HOME="/usr/lib/oracle/11.2/client64/" && export OCI_LIB="/usr/lib/oracle/11.2/client64/lib" && export LD_LIBRARY_PATH_64="/usr/lib/oracle/11.2/client64/lib:/home/nguiller/Downloads/instantclient_11_2" - person Nils Guillermin; 14.02.2013
comment
У меня точно такая же проблема ‹br/›‹br/› ‹div style=dIsplay: inline-block;› библиотека (ORE) Загрузка требуемого пакета: OREdm Ошибка в dyn.load(file, DLLpath = DLLpath, ...) : невозможно загрузить общий объект '/home/usernamehere/R/x86_64-redhat-linux-gnu-library/3.2/ROracle/libs/ROracle.so': libclntsh.so.11.1: невозможно открыть общий объектный файл: такого файла нет или Ошибка каталога: пакет 'OREdm' не может быть загружен ‹/div› ‹br/›‹br/› вы делаете ссылку на InstantClient_11_2 в пользовательском каталоге. откуда ты взял это там ... непрочитанные файлы ? - person Madmartigan; 04.12.2015
comment
@Madmartigan Проверьте свою установку (файл есть ...) и переменные среды (путь (и) библиотеки для вашей платформы) - person igr; 04.12.2015
comment
ура, у меня была кровавая опечатка ... которую я просматривал так много раз ... вы правы, LD_LIBRARY_PATH был тем, который нуждался в местоположении InstantClient_11_2 ... теперь все хорошо ... счастливых дней :) - person Madmartigan; 04.12.2015
comment
Обратите внимание - в некоторых дистрибутивах Linux вам нужно изменить LD_LIBRARY_PATH в /etc/ld.so.conf.d/*.conf на ЭТО опубликовать на SO. - person Ian; 04.01.2017

Если вы действительно действительно хотите сделать это в среде R, вы можете загрузить конкретную библиотеку следующим образом:

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

Рекомендации:

Установка LD_LIBRARY_PATH изнутри R

person chinsoon12    schedule 03.10.2017

установить $LD_LIBARARY_PATH=$ORACLE_HOME/lib

person Syed Ali    schedule 28.06.2017

У меня такая же ошибка при загрузке "библиотеки (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

Похоже, что общий объект ROracle.so ссылается на libclntsh.so.11.1 вместо 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

В качестве обходного пути я создал символическую ссылку, чтобы на libclntsh.so.12.1 можно было ссылаться как на libclntsh.so.11.1.

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

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

После этого шага я могу успешно загрузить библиотеку (ORE).

См. мой сайт для более подробной информации.

person Rajiv Kuriakose    schedule 12.03.2016

Установите это в /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

Это помогло мне.

person Elango    schedule 08.12.2017
comment
/etc/rstudio/rserver.conf доступен только для чтения. - person Rafael Lima; 11.05.2021