ROracle包安装失败

h9vpoimq  于 2023-06-03  发布在  Oracle
关注(0)|答案(3)|浏览(589)

我知道有关此问题的其他问题,但它们与我的系统设置或安装错误没有太多共同之处,所以:
我正在使用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;两者都在PATH上。
在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

Rtools找不到的文件ociver. h肯定存在于OCI_INC文件夹中,所以我不知道为什么会发生这种情况。有没有人知道该尝试什么?

vc9ivgsu

vc9ivgsu1#

我也遇到了同样的问题:

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的包含文件夹中没有什么?没错,奥西弗。我相信R试图将OCI包含文件夹的内容复制到R包含文件夹,因为这一行是错误的几行:

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

失败了,也许以管理员的身份运行会有帮助?或者编辑文件夹权限?
无论如何,我手动将oracle include文件夹的内容复制到R include文件夹,这似乎解决了我的问题。

j8ag8udp

j8ag8udp2#

感谢Eric的回答,绝对有效!但似乎问题出在包本身,而不是R试图将包含文件复制到R的包含文件夹中。所以另一种解决方法是

  • 解压缩源代码归档文件,使当前目录中有一个ROracle文件夹
  • 编辑文件ROracle/configure.win并将以下行添加到文件末尾

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

  • 保存并关闭文件。现在,在您的当前目录中,在更新的软件包文件夹上运行install命令

R CMD INSTALL ROracle
这应该可以解决问题。我不确定开发人员是否忘记在www.example.com中包含这一行configure.win或者这只发生在较新版本的R中,因为该软件包自2016年以来一直没有更新,并且在文档中他们提到ROracle支持R版本高达3.2。

k7fdbhmy

k7fdbhmy3#

我使用4.02。我发现最新的ROracle package on Oracle's website可以与InstantClient和上面描述的Sys.setenv安装程序一起工作。
谢谢你的跟进mirkohosro。

相关问题