【问题标题】:How do I determine if my R installation on OS X has the "--enable-R-shlib" option enabled?如何确定我在 OS X 上安装的 R 是否启用了“--enable-R-shlib”选项?
【发布时间】:2010-12-25 02:43:03
【问题描述】:

我已经通过 .pkg 方法在我的 OS X 机器上安装了 R。我试图让一个名为 RSRuby 的 Ruby gem 工作,虽然它安装正确,但当我尝试调用 gem 时它会抛出一个错误。

Fatal error: R home directory is not defined

RSRuby 文档声明 R 应该使用选项 --enable-R-shlib 安装。但 R 文档指出 Mac OS X 安装默认执行此操作。如果您不知道在安装过程中显式调用了此选项,如何验证该选项是否已在安装中启用?

我正在追查为什么 RSRuby 找不到 R 主目录,这似乎是最有可能出现的问题。

根据 RSRuby 文档,我将其复制到我的主目录中

[~]$ R_HOME=/Library/Frameworks/R.framework/Resource

从 R 控制台,这是输出:

> R.home()
[1] "/Library/Frameworks/R.framework/Resources"

在 gem 安装期间,我运行了这个命令:

gem install rsruby -- --with-R-dir=$R_HOME=/Library/Frameworks/R.framework/Resources

另外,这些是我的 /Library/Frameworks/R.framework/Libraries 文件夹的内容:

[Libraries]$ ls
i386                    libRblas.dylib.dSYM     libgfortran.2.dylib
libR.dylib              libRblas.vecLib.dylib   libreadline.5.2.dylib
libR.dylib.dSYM         libRlapack.dylib        libreadline.dylib
libRblas.0.dylib        libRlapack.dylib.dSYM   ppc
libRblas.dylib          libgcc_s.1.dylib        x86_64

【问题讨论】:

    标签: ruby r installation gem


    【解决方案1】:

    简单地说:

    1. 您可以通过查看生成的 R 构建的二进制文件来检查 --enable-R-shlib;在 Linux 上,我可以执行 ldd /usr/lib/R/bin/exec/R,这表明 libR.so --- 共享的 R 库 --- 是由这个二进制文件加载的。这就是嵌入 R 的其他项目(RInside、littler、R-in-Apache 模块……)使用的,大概也是 RSRuby 会使用的。

    2. 如果您收到错误“未定义 R 主目录”,我将首先定义环境变量 R_HOME

    编辑:关于问题 1,在 OS X 上,您的动态库以 .dylib 结尾。因此,您显示的目录列表清楚地表明 R 是使用 --enable-R-shlib 作为编译时选项构建的。关于问题 2,我为 rsruby os x 获得的第一个 Google 搜索清楚地描述了如何在 OS X 上设置 R_HOME(正如我告诉过你的那样),请参阅 https://github.com/alexgutteridge/rsruby

    【讨论】:

    • 我在原始问题中阐明了我的流程(本来应该这样做的)
    • 我相信我找到了 /usr/lib/R/bin/exec/R 的 OS X 版本。我在上面的问题中发布了它,看起来我缺少 libR.so .... 这可能是问题吗?
    • 谢谢。现在我知道我有 --enable-R-shlib 我可以在其他地方搜索解决方案。我已阅读 gem 作者的 github 解释,并在我的问题中将其作为 RSRuby 文档引用。安装的第一步是确保在安装过程中启用了 --enable-R-shlib,在您为我回答之前我并不清楚。我已经定义了 R_HOME 变量(如上面的 R.home() 信息所示)。我现在必须继续 README 中建议的其他解决方案。再次感谢。
    • 已找到解决方案。我以为我是从命令行设置 R_HOME 变量,但我现在的印象是它不是这样工作的。我将'export R_HOME="my/R/home" 行放在我的.bash_profile 中,我不再收到'致命错误:R 主目录未定义'。我将不得不阅读它为什么以这种方式工作以及导出意味着什么,但现在我很高兴让它工作。
    • 作为参考,ldd 的 OS X 等效项是 otool -L
    猜你喜欢
    • 2018-10-12
    • 2015-03-21
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 2012-05-26
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多