我一直在尝试安装一些软件包,如RODBC,ROracle或RGtk2 - 用于拨浪鼓。我真的很感激,如果有人可以帮助我解决这个问题,以便我可以在Mac上使用这些应用程序与小牛队和3.1.1 R
我对RODBC和RGtk2都有这种错误:
包'RGtk2'可用作源包但不是二进制包 install.packages中的警告:包'RGtk2'不可用(for R版本3.1.1)
当我尝试使用type =' source'时,我可以下载或开始下载,但后来我收到此类错误消息......
install.packages中的警告: “RODBC”包的安装具有非零退出状态
答案 0 :(得分:30)
这个答案将涵盖在OS X上安装RODBC和ROracle,特别是在Mavericks及更高版本上。
现在需要从源代码构建(编译)这两个包。这意味着您需要的第一件事就是下载XCode和相关的“命令行工具”,以便您实际上拥有编译器。你如何做到这一点已基本上改变了OS X / XCode的每个版本,但如果你开始谷歌搜索,你可能会最终登陆here。
一旦你有了......
<强> RODBC 强>
自从OS X 10.9(Mavericks)Apple停止包含iODBC SQL头文件以及 OS X上的R用户习惯于安装以构建R的“命令行工具” 来自源头的包裹。
因此,如果您尝试在Mavericks上从源代码构建RODBC,您应该会收到如下错误:
configure:error:“找不到ODBC头sql.h和sqlext.h”
要解决此问题,您需要下载最新版本的iODBC(www.iodbc.org),
然后解压缩文件并设置标题和库搜索路径
到放置解压缩包的位置。如果你不知道怎么做
要设置搜索路径,可以将头文件(sql.h和sqlext.h)放在/usr/include
目录中,
以及libiodbc.a
目录中的/usr/lib
文件。
然后你应该能够做到
install.packages("RODBC",type = "source")
没有任何问题。据推测,这也适用于其他主要的开源ODBC项目unixODBC,但我还没有尝试过。
我已经在El Capitan上测试了这个(以及另一个答案中的自制方法),两者仍在使用。
<强> ROracle 强>
这更复杂。但是,可以在OS X上安装ROracle(我已经通过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
使用适合您机器的任何路径。
我无法使用OCI_LIB
环境变量来编译ROracle。代替,
我使用了--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或
来自GUI的RStudio.app,然后尝试运行library(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
问题显然与环境变量如何可用有关
GUI在OS X中启动了应用程序。通常情况下,我最终找到了
StackOverflow上的解决方案。编辑
/etc/launchd.conf
文件解决了这个问题,所以即使在RStudio / RGui时,ROracle也会加载
从Finder发布。虽然请注意here Yosemite不再支持/etc/launchd.conf
解决方案。该答案表明您现在需要设置一个启动plist文件,以便在启动时为launchctl
设置环境。
针对战神的El Capitan更新
我现在已经浏览了El Capitan中的这个坩埚,它的工作原理如上所述,但前提是你首先禁用系统完整性保护!这样做相当快,并且可以通过Google轻松找到说明。
呼。
答案 1 :(得分:24)
如果你有自制软件,这将很容易。 在终端中,使用
brew install unixodbc
在r控制台中,使用
install.packages("RODBC",type="source")
希望它会有所帮助
答案 2 :(得分:2)
如果您正在使用MacPorts,请执行以下操作:
sudo port install unixODBC
然后,在主目录中创建(或,如果存在,编辑)文件
~/.R/Makevars
应该包含一行
CFLAGS += -I/opt/local/include
然后,您可以通过
安装RODBCinstall.packages("RODBC",type="source")
基本上,以上
答案 3 :(得分:0)
您必须手动从源代码构建软件包。如果你去了RODBC网站,你会发现小邮件不适用于小牛队。下载软件包并按照从源代码构建软件包的说明进行操作。 These are Windows instructions但总的想法是一样的。您将需要在特定包的构建过程中使用的所有必需的OS包。