Ошибка установки пакета ROracle - PullRequest
0 голосов
/ 07 сентября 2018

Мне известны другие вопросы по этой проблеме, но они не имеют ничего общего с моей настройкой системы или ошибкой установки, которую я получаю, поэтому:

Я использую Windows 7, 64 бит

Я установил 64-битный Oracle Instant Client 18.3.0.0.0 вместе с его расширениями sdk и odbc, доступными с http://www.oracle.com/technetwork/topics/winx64soft-089540.html

Я поместил место установки `C: \ Oracle \ instantclient_18_3 'в PATH.

Я установил R 3.5.1 и Rtools 3.5; оба находятся на ПУТИ.

В R,

Sys.setenv(
  'ORACLE_HOME' = 'C:/Oracle/instantclient_18_3',
  'OCI_INC'     = 'C:/Oracle/instantclient_18_3/sdk/include',
  'OCI_LIB64'   = 'C:/Oracle/instantclient_18_3'
  )
install.packages("ROracle", type="source")

приводит к следующему

* installing *source* package 'ROracle' ...
** package 'ROracle' successfully unpacked and MD5 sums checked
Oracle Client Shared Library 64-bit - 18.3.0.0.0 Operating in Instant Client mode.
found Oracle Client C:/Oracle/instantclient_18_3
found Oracle Client include C:/Oracle/instantclient_18_3/sdk/include
copying from C:/Oracle/instantclient_18_3/sdk/include
** libs
c:/Rtools/mingw_64/bin/gcc  -I"C:/Program Files/R/R-3.5.1/include" -DNDEBUG -I./oci         -O2 -Wall  -std=gnu99 -mtune=generic -c rodbi.c -o rodbi.o
In file included from rooci.h:75:0,
                 from rodbi.c:181:
./oci/oci.h:716:20: fatal error: ociver.h: No such file or directory
 #include <ociver.h>
                    ^
compilation terminated.
make: *** [C:/Program Files/R/R-3.5.1/etc/x64/Makeconf:208: rodbi.o] Error 1
ERROR: compilation failed for package 'ROracle'
* removing 'C:/Users/obrienle/Documents/R/win-library/3.5/ROracle'
In R CMD INSTALL
Warning in install.packages :
  installation of package ‘ROracle’ had non-zero exit status

Файл ociver.h, который Rtools не может найти, определенно присутствует в папке OCI_INC, поэтому я не знаю, почему это происходит. У кого-нибудь есть идеи о том, что попробовать?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Спасибо Эрику за его ответ, он определенно работает! Но, похоже, проблема в самом пакете, а не в том, что R пытается скопировать включаемые файлы в папку include R. Таким образом, альтернативным решением является

  • Распакуйте исходный архив, чтобы в вашем каталоге была папка ROracle текущий каталог
  • Отредактируйте файл ROracle/configure.win и добавьте следующую строку в конец файла

    cp ${ROCI_INC}/ociver.h ./src/oci

  • Сохраните и закройте файл. Теперь в вашем текущем каталоге выполните команду установки в папке обновленного пакета

    R CMD INSTALL ROracle

Это должно решить проблему. Я не уверен, что разработчики забыли включить эту строку в configure.win или это происходит только с более новыми версиями R, поскольку пакет не обновлялся с 2016 года, и в документах упоминается, что ROracle поддерживает Версии R до 3.2.

0 голосов
/ 14 сентября 2018

У меня была точно такая же проблема:

c:/Rtools/mingw_64/bin/gcc  -I"C:/PROGRA~1/R/R-35~1.1/include" -DNDEBUG -I./oci         -O2 -Wall  -std=gnu99 -mtune=generic -c rodbi.c -o rodbi.o
In file included from rooci.h:75:0,
                 from rodbi.c:181:
./oci/oci.h:716:20: fatal error: ociver.h: No such file or directory
 #include <ociver.h>
                    ^
compilation terminated.

Как только я посмотрел намного ближе к ошибке, я понял, что происходит. Мне показалось, что аргументы для Rtools устанавливают -I для папки включения R, а не для папки включения OCI, и догадайтесь, чего нет в папке включения R? Это верно, ociver.h. Я полагаю, что R пытается скопировать содержимое папки включения OCI в папку включения R из-за этой строки на несколько строк выше ошибки:

copying from C:\Oracle\instantclient_18_3\sdk\include\

и не удается, может быть, запуск от имени администратора поможет? Или, возможно, редактирование прав доступа к папке?

В любом случае, я вручную скопировал содержимое папки oracle include в папку R include, и это, похоже, решило проблему для меня.

...