微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在OS X小牛上安装RODBC/ROracle软件包

我一直在尝试安装一些包,如RODBC,ROracle或RGtk2 – 用于拨号。我真的很感激,如果有人可以帮助我解决这个问题,所以我可以使用这些应用程序在Mac与小牛和3.1.1 R

我得到RODBC和RGtk2的这种错误

package ‘RGtk2’ is available as a source package but not as a binary
Warning in install.packages : package ‘RGtk2’ is not available (for
R version 3.1.1)

当我尝试使用type =’source’时,我可以下载或开始下载,但是我收到这样的错误消息…

警告在install.packages:
包装“RODBC”的安装具有非零退出状态

这个答案将涵盖在OS X上安装RODBC和ROracle,特别是在小牛和以后。

这两个包现在需要从源代码(编译)。这意味着您首先需要下载XCode和相关的“命令行工具”,以便您实际上具有编译器。基本上每个版本的操作系统X / XCode,您的操作都有所改变,但如果您开始使用Google搜索,您将可能会着陆here

一旦你有了…

RODBC

由于OS X 10.9(小牛)苹果停止包括iODBC sql文件以及
OS X上的R用户习惯于安装以构建R的“命令行工具”
源码包。

所以如果您尝试在小牛的源码上构建RODBC,您应该会收到如下错误

configure: error: “ODBC headers sql.h and sqlext.h not found”

解决这个问题,您需要下载最新版本的iODBC(www.iodbc.org),
然后解压缩文件并设置您的标题和库搜索路径
到您放置解压缩包的位置。如果你不知道如何
要设置搜索路径,您可以将头文件(sql.h和sqlext.h)放在/ usr / include目录中,
和libiodbc.a文件在/ usr / lib目录中。

那么你应该能够做到

install.packages("RODBC",type = "source")

没有任何问题。大概这也将与其他主要的开源ODBC项目unixODBC一起工作,但我还没有尝试过。

我在El Capitan测试了这个(和另一个答案的自制方法),并且仍然工作。

ROracle

这更复杂然而,ROracle可以安装在OS X上(我已经通过El Capitan在Mountain Lion上测试过)。由于ROracle依赖于Oracle Instant Client,所以没有可用的二进制文件
任何平台。有关here软件包的详细安装说明。

对于OS X,我们需要(主要)遵循Linux指令。

首先,按照Linuz的说明下载相应的Oracle Instant Client以及SDK。

Linux安装说明提到从RPM安装客户端,这将把所有内容放在正确的位置。我无法弄清这是否适用于OS X,所以我只是将客户端解压到我创建的目录中,并将SDK放在/ sdk中的该目录中。

Linux安装指令然后指示我们为libclntsh.so.11.1创建一个符号链接。以来
这是OS X,它实际上被称为libclntsh.dylib.11.1。所以我们需要cd到目录里面
我们解压缩客户端然后运行

ln -s libclntsh.dylib.11.1 libclntsh.dylib

在OS X上,我们然后设置DYLD_LIBRARY_PATH,而不是LD_LIBRARY_PATH:

export DYLD_LIBRARY_PATH=/scratch/instantclient_11_2:$DYLD_LIBRARY_PATH

使用任何路径对您的机器是正确的。

我无法让ROracle使用OCI_LIB环境变量进行编译。代替,
我使用–with-oci-lib编译器标志选项:

R CMD INSTALL --configure-args='--with-oci-lib=/scratch/instantclient_11_2' ROracle_1.1-11.tar.gz

再次使用任何路径和ROracle版本号是适当的。

如果使用tnsnames.ora文件连接到Oracle数据库,则还需要
设置一个TNS_ADMIN环境变量来指向该文件的位置。

最后一个问题:你可能会发现(就像我这样做),只有当你启动R时,这一切都会奏效
从命令行(即终端)。具体来说,如果您启动了RGui.app或
RStudio.app从GUI,然后尝试运行库(ROracle),你会得到一个错误
说出一些事情

> library("ROracle")
Error in dyn.load(file,DLLpath = DLLpath,...) : 
  unable to load shared object '/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so,6): Library not loaded: /ade/b/3071542110/oracle/rdbms/lib/libclntsh.dylib.11.1
  Referenced from: /Library/Frameworks/R.framework/Versions/3.1/Resources/library/ROracle/libs/ROracle.so
  Reason: image not found
Error: package or namespace load Failed for ‘ROracle’

即使Sys.getenv(“DYLD_LIBRARY_PATH”)忠实地报告也会发生这种情况
正确的路径。

一段时间以来,我一起搞了一个解决方案”,在那里我创建了一个启动的shell脚本
RStudio / RGui在启动时,只是不得不记得总是随后通过它们启动它们

open -a R.app
open -a RStudio.app

这个问题显然与环境变量的可用性有关
到OS X中的GUI启动应用程序。通常情况下,我终于找到了
解决方StackOverflow.编辑
/etc/launchd.conf文件解决了这个问题,所以ROracle现在加载甚至当RStudio / RGui
从Finder发布。虽然注意到here在优胜美地不再支持/etc/launchd.conf解决方案。该答案建议您现在需要设置一个启动plist文件,只是为了在启动时设置launchctl的环境。

对于ROracle的El Capitan更新

我现在已经在El Capitan通过了这个坩埚,它的工作原理如上所述,但只有当您首先禁用系统完整性保护时!这样做相当快速,并且可以通过Google轻松找到说明。

唷。

原文地址:https://www.jb51.cc/oracle/205784.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐