如何在macOS Sierra 10.12.4上安装RODBC

问题描述 投票:1回答:1

在R 3.4.0中,

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

在macOS 10.12.4上失败。我还从CRAN下载了RODBC_1.3-15.tar.gz并尝试过,

R CMD INSTALL RODBC_1.3-15.tar.gz

在这两种情况下,我都找到了“找不到ODBC头sql.h和sqlext.h”。在Installation of RODBC/ROracle packages on OS X Mavericks对此进行的讨论说明如下:

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

我下载了iodbc-42.5.tar.gz并将其解压缩到RODBC旁边的一个目录中,从RODBC_1.3-15.tar.gz解压缩。遗憾的是,我找不到如何设置标题和库搜索路径,当我尝试将头文件放在/usr/include中时,系统不会让我。

iodbc-42.5/iodbc/README.MACOSX说,

您首先需要安装最新的Mac OS X开发人员包,可以在http://developer.apple.com/tools找到

我想我已经做到了,但我不知道如何检查它。 [事实上,我想我已经多次这样做了:消息ODBC headers sql.h and sqlext.h not found,从对install.packages('RODBC', type='source')的仍然负面反应中消失了一段时间,但在我成功安装port并运行sudo port install gcc6之后才重新出现。然后我又得到了ODBC headers sql.h and sqlext.h not found。]

iodbc-42.5/iodbc/README.MACOSX继续,

然后,您可以在mac/iODBCinstmac/iODBCmac/iODBCtestmac/iODBCtestw下打开Xcode Project Builder文件。

我不知道怎么找到这些。它继续,

或者从终端会话执行以下命令以构建所有框架和演示应用程序:

$ cd mac
$ make

我做了$ cd mac并得到了-bash: cd: mac: No such file or directory。显然,我需要在这里替换mac的东西,但我不知道是什么。 ???

谢谢。

r macos-sierra rodbc iodbc
1个回答
4
投票

我解决了这个问题:

ODBC_INCLUDE=/path/to/libiodbc-srcs/include R CMD INSTALL RODBC

其中“/ path / to / libiodbc-srcs / include”是包含缺失文件“include”文件夹的路径,“sql.h”和“sqlext.h”。在我的情况下,它类似于'〜/ Documents / Rstuff / iodbc-42.5 / iodbc / include',我在R中检查了以下内容:

dir('~/Documents/current/Rstuff/iodbc-42.5/iodbc/include')

然后以下为我工作:

ODBC_INCLUDE=~/Documents/current/Rstuff/iodbc-42.5/iodbc/include R CMD INSTALL RODBC

这在p。中有描述。 https://cran.r-project.org/web/packages/RODBC/vignettes/RODBC.pdf中的19个,除了包含一个流浪的引号(),因为我不熟悉那个语法而把它从我读过的前几次扔掉了。

在R-Sig-Mac上,Marc Schwartz提出了两个建议:第一,Installation of RODBC on OS X Yosemite,可能与“brew”一起工作;我没有尝试过,因为我先完成了上述工作。

第二:

install.packages("RODBC", type = "source", 
    configure.args = "--with-odbc-include=/path/to/libiodbc-srcs/include/")

这应该也适用于上面提到的路径替换。

我希望这有助于其他人。

© www.soinside.com 2019 - 2024. All rights reserved.