我得到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”的安装具有非零退出状态
这两个包现在需要从源代码(编译)。这意味着您首先需要下载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轻松找到说明。
唷。