【问题标题】:RStudio Server doesn't find libraries for Macports R when buildingRStudio Server 在构建时找不到 Macports R 的库
【发布时间】:2015-01-03 05:12:36
【问题描述】:

我正在构建最新的 github 版本的 rstudio-server 以在 OSX Yosemite 上运行,但在安装时无法找到 macports R 库。

我遇到“未找到最低 R 版本 (2.11.1)”。运行时出错
cmake -DRSTUDIO_TARGET=Server -DCMAKE_BUILD_TYPE=Release ..
但是当我也通过-DRSTUDIOVERIFYR_VERSION=0 时,我配置成功并在构建失败之前将其提高到大约 44%:

Rogers-iMac:build roger$ sudo make install
Password:
Scanning dependencies of target gwt_build
Buildfile: /Users/roger/projects/rstudio/src/gwt/build.xml
[...]
Scanning dependencies of target rstudio-r
[ 44%] Building CXX object src/cpp/r/CMakeFiles/rstudio-r.dir/RErrorCategory.cpp.o
[ 44%] Building CXX object src/cpp/r/CMakeFiles/rstudio-r.dir/RExec.cpp.o
In file included from /Users/roger/projects/rstudio/src/cpp/r/RExec.cpp:17:
In file included from /Users/roger/projects/rstudio/src/cpp/r/include/r/RExec.hpp:30:
In file included from /Users/roger/projects/rstudio/src/cpp/r/include/r/RSexp.hpp:33:
/Users/roger/projects/rstudio/src/cpp/r/include/r/RInternal.hpp:43:10: fatal error: 'Rinternals.h' file not found
#include <Rinternals.h>
         ^
1 error generated.

我能够在/opt/local/Library/Frameworks/R.framework/Versions/3.1/PrivateHeaders/Rinternals.h 中找到Rinternals.h编辑:也在 /opt/local/Library/Frameworks/R.framework/Versions/3.1/Resources/include/Rinternals.h),但是如何将构建配置指向这个位置?

编辑:此外,我遇到了另一个问题,即构建失败了大约 70% 并出现错误
/opt/local/lib/libR.dylib/Resources/R: not a directory
make[2]: *** [src/cpp/r/R/packages/library/manipulate/DESCRIPTION] Error 126 经进一步调查,/opt/local/lib/libR.dylib/Resources/R 并不存在,因为/opt/local/lib/libR.dylib 实际上是一个文件。

【问题讨论】:

    标签: macos rstudio macports rstudio-server


    【解决方案1】:

    不确定cmake的具体情况,但你可以试试

    $ export CPATH=$CPATH:/opt/local/Library/Frameworks/R.framework/Versions/3.1/PrivateHeaders/
    $ sudo make install
    

    告诉编译器在您找到头文件的位置查找头文件。

    【讨论】:

    • 我重新配置了,这次使用cmake没有问题。构建时,错误仍然存​​在。
    • 这应该可以,但是某些旧版本的 clang 不支持 CPATH(请参阅 llvm.org/bugs/show_bug.cgi?id=8971),因此请尝试解决此问题(请参阅我的回答)。
    • 嗯...实际上看起来我并没有真正解决问题;当我清除了安装的构建文件夹并重新开始时,它又出现了错误
    【解决方案2】:

    这似乎是 RStudio cmake 脚本无法正确检测到 MacPorts R 安装的问题。要解决这些问题:

    1. 使用export RSTUDIO_WHICH_R=/opt/local/bin/R(或任何适合您的位置)将cmake 指向您的R 可执行文件的正确位置,如this RStudio Knowledge Base Article 中所述。这解决了cmake 无法生成配置的问题。
    2. 若要解决Rinternals.h 找不到的问题,请进入build/CMakeCache.txt 并更改LIBR_INCLUDE_DIRS 的路径以反映Rinternals.h 的实际位置,如this RStudio Support Forum Question 所述。
    3. 确保LIBR_EXECUTABLELIBR_HOMELIBR_DOC_DIR 都指向正确的位置。您可以通过在 R 交互式提示中执行R.home(component="home")(或component="doc")来获取正确的位置,如this webpage 中所述。这将解决 44% 的构建错误,以及 70% 的额外错误。

    【讨论】:

      【解决方案3】:

      -I /opt/local/Library/Frameworks/R.framework/Versions/3.1/PrivateHeaders/ 添加到编译器的命令行。

      或者,您可以在环境中设置CPLUS_INCLUDE_PATH,以告诉编译器在编译 C++ 代码时在哪里搜索额外的头文件。如果需要,您可能还想为 C 设置 C_INCLUDE_PATH

      $ export CPLUS_INCLUDE_PATH=/opt/local/Library/Frameworks/R.framework/Versions/3.1/PrivateHeaders
      $ make
      

      【讨论】:

      • 所以我什至无法用 cmake 正确配置它;我只是使用-DRSTUDIOVERIFYR_VERSION=0 配置。在一个干净的cmake 上,我又回到了原点。
      • 我找到了解决方案,该解决方案位于一个名为RSTUDIO_WHICH_R 的记录不完善的环境变量中。不过,您的回答为我指明了正确的方向,非常感谢您。
      猜你喜欢
      • 2014-07-03
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-04
      • 2011-02-13
      • 2015-07-17
      • 2016-02-24
      相关资源
      最近更新 更多