【问题标题】:Install ROracle in Mac在 Mac 上安装 ROracle
【发布时间】:2017-05-09 20:40:06
【问题描述】:

我使用的是 Mac OS Sierra。

我尝试过 - Installation of RODBC/ROracle packages on OS X Mavericks 但没有帮助。

这就是我所做的:

  • http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html 下载 - Basic、Sql plus、odbc
  • 解压到我在 Instantclient_12_1 的主文件夹中
  • ln -s libclntsh.dylib.12.1 libclntsh.dylib
  • 导出 DYLD_LIBRARY_PATH=/Users/dhananjaygoel/instantclient_12_1:$DYLD_LIBRARY_PATH
  • R CMD INSTALL --configure-args='--with-oci-lib=/Users/dhananjaygoel/instantclient_12_1' ROracle_1.3-1.tar.gz

它给了我以下错误:

* installing to library ‘/Library/Frameworks/R.framework/Versions/3.3/Resources/library’
* installing *source* package ‘ROracle’ ...
** package ‘ROracle’ successfully unpacked and MD5 sums checked
configure: creating ./config.status
config.status: creating src/Makevars
** libs
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Users/dhananjaygoel/instantclient_12_1/sdk/include -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include    -fPIC  -Wall -mtune=core2 -g -O2  -I/opt/local/include -c rodbi.c -o rodbi.o
rodbi.c:2432:53: warning: format specifies type 'long long' but the argument has
      type 'sb8' (aka 'long') [-Wformat]
        sprintf(err_buf, RODBI_ERR_BIND_VAL_TOOBIG, bndsz);
                                                    ^~~~~
/usr/include/secure/_stdio.h:47:56: note: expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
rodbi.c:2469:53: warning: format specifies type 'long long' but the argument has
      type 'sb8' (aka 'long') [-Wformat]
        sprintf(err_buf, RODBI_ERR_BIND_VAL_TOOBIG, bndsz);
                                                    ^~~~~
/usr/include/secure/_stdio.h:47:56: note: expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
rodbi.c:2816:55: warning: format specifies type 'long long' but the argument has
      type 'sb8' (aka 'long') [-Wformat]
          sprintf(err_buf, RODBI_ERR_BIND_VAL_TOOBIG, bndsz);
                                                      ^~~~~
/usr/include/secure/_stdio.h:47:56: note: expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
rodbi.c:2861:55: warning: format specifies type 'long long' but the argument has
      type 'sb8' (aka 'long') [-Wformat]
          sprintf(err_buf, RODBI_ERR_BIND_VAL_TOOBIG, bndsz);
                                                      ^~~~~
/usr/include/secure/_stdio.h:47:56: note: expanded from macro 'sprintf'
  __builtin___sprintf_chk (str, 0, __darwin_obsz(str), __VA_ARGS__)
                                                       ^~~~~~~~~~~
4 warnings generated.
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG -I/Users/dhananjaygoel/instantclient_12_1/sdk/include -I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include    -fPIC  -Wall -mtune=core2 -g -O2  -I/opt/local/include -c rooci.c -o rooci.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o ROracle.so rodbi.o rooci.o -L/Users/dhananjaygoel/instantclient_12_1 -lclntsh -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
installing to /Library/Frameworks/R.framework/Versions/3.3/Resources/library/ROracle/libs
** R
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) : 
  unable to load shared object '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/ROracle/libs/ROracle.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/ROracle/libs/ROracle.so, 6): Library not loaded: @rpath/libclntsh.dylib.12.1
  Referenced from: /Library/Frameworks/R.framework/Versions/3.3/Resources/library/ROracle/libs/ROracle.so
  Reason: image not found
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/Library/Frameworks/R.framework/Versions/3.3/Resources/library/ROracle’

请有人帮忙。

【问题讨论】:

  • 你找到解决办法了吗?

标签: r macos roracle


【解决方案1】:

以下在运行 El Capitan 的几台机器上对我有用,所以也许它适用于 High Sierra。与其他一些说明不同,这要求您禁用 SIP。

  1. 安装 Oracle Instant Client Basic、SDK 和 SQL*Plus 软件包。我很确定我没有使用 ODBC 包,但如果你有它,它不应该妨碍它。

  2. 创建或编辑~/.R/Makevars。添加以下内容:

    CC=/usr/bin/clang -rpath /Users/dhananjaygoel/instantclient_12_1
    LDFLAGS=-L/Users/dhananjaygoel/instantclient_12_1
    

    CC 中的 -rpath 设置和LDFLAGS 中的 -L 链接目录都应该是 Instant Client 的 .dylib 文件的位置。如果您已将它们移动到另一个位置(我个人更喜欢创建一个 /lib 子目录并将它们放在那里),那是您应该指向的位置。

  3. 运行安装命令:

    R CMD INSTALL --configure-args='--with-oci-lib=/Users/dhananjaygoel/instantclient_12_1' ROracle_1.3-1.tar.gz

    --with-oci-lib= 指向 Instant Client 的根目录(与 Makevars 中的引用不同,据我所知,这并不依赖 .dylib 文件的位置)。

【讨论】:

  • 仍然适用于 R3.6.2 和 MacOS Catalina。你的 mac 会要求允许使用每个 .dylib 文件,所以这需要一段时间,但最终你可以使用 ROracle
【解决方案2】:

我发现this 在谷歌上搜索。
只需 Ctrl+f(或您在 Mac 上的替代方案,我使用的是 linux)“找不到图像”一词,它就会带您解决问题。
该页面最终会将您引导至here
它与您的错误非常相似,但是,我没有任何使用 Mac 的经验,但希望对您有所帮助:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-03
    • 2019-12-03
    • 2018-05-29
    • 1970-01-01
    • 2013-12-06
    • 2017-03-07
    • 2019-02-12
    相关资源
    最近更新 更多