【问题标题】:R 3.2, GCC, and homebrewR 3.2、GCC 和自制软件
【发布时间】:2015-05-21 21:29:19
【问题描述】:

我最近需要安装 R 3.2 才能让 Bioconductor 的包正常工作,但安装后,我收到以下错误:

[16:16:11 20] $ r
dyld: Library not loaded: /usr/local/lib/gcc/4.9/libgfortran.3.dylib
  Referenced from: /usr/local/Cellar/r/3.2.0/R.framework/Versions/3.2/Resources/lib/libR.dylib
  Reason: image not found
Trace/BPT trap: 5

果然brew设置为使用gcc 5,所以我告诉brew使用4.9版本

brew switch gcc 4.9

它让 R 运行,但随后 R 在安装包的过程中失败(特别是当我运行 biocLite('DESeq2') 时。

从那时起,我尝试了很多事情,包括尝试安装 gcc 4.8(但我似乎无法让 R 使用它,即使通过 ~/.R/Makevars 也是如此)。即使没有安装 4.9,R 也坚持调用如上所示的路径。

Windows 版本的 R 似乎说 4.9 不适用于 3.2:

R-devel 暂时使用了一个基于 4.9.2 gcc 的新工具链,由 Duncan Murdoch 使用承包商编写的构建脚本组装而成。但是,与现有代码有太多不兼容的地方,这个工具链不会用于 R 3.2.0。有关构建和测试新工具链的详细信息,请参阅注释。

任何帮助将不胜感激!

编辑: 我尝试按照@lmw 的建议从源代码安装,但失败了:

[11:27:55 2] $ brew install r --build-from-source
==> Installing r from homebrew/homebrew-science
==> Installing r dependency: gcc
==> Downloading http://ftpmirror.gnu.org/gcc/gcc-5.1.0/gcc-5.1.0.tar.bz2
######################################################################## 100.0%
curl: (28) Resolving timed out after 5542 milliseconds
Trying a mirror...
==> Downloading https://ftp.gnu.org/gnu/gcc/gcc-5.1.0/gcc-5.1.0.tar.bz2
######################################################################## 100.0%
==> Patching
patching file gcc/jit/Make-lang.in
==> ../configure --build=x86_64-apple-darwin14.3.0 --prefix=/usr/local/Cellar/gcc/5.1.0 --libdir=/usr/local/Cellar/gc
==> make bootstrap
==> make install
==> Caveats
GCC has been built with multilib support. Notably, OpenMP may not work:
  https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60670
If you need OpenMP support you may want to
  brew reinstall gcc --without-multilib
==> Summary
????  /usr/local/Cellar/gcc/5.1.0: 1351 files, 248M, built in 32.5 minutes
==> Installing r
==> Using Homebrew-provided fortran compiler.
This may be changed by setting the FC environment variable.
==> Downloading http://cran.rstudio.com/src/base/R-3/R-3.2.0.tar.gz
######################################################################## 100.0%
==> Patching
patching file src/modules/lapack/vecLibg95c.c
==> ./configure --prefix=/usr/local/Cellar/r/3.2.0_1 --with-libintl-prefix=/usr/local/opt/gettext --enable-memory-pro
==> make
** installing vignettes
** testing if installed package can be loaded
* DONE (survival)
make[1]: *** [recommended-packages] Error 2
make: *** [stamp-recommended] Error 2

READ THIS: https://git.io/brew-troubleshooting
If reporting this issue please do so at (not Homebrew/homebrew):
  https://github.com/homebrew/homebrew-science/issues

编辑 2: 只是为了好玩,我尝试在没有--build-from-source 选项的情况下安装r,它成功了。请参阅下面的解决方案。 (我认为从源代码构建可能已经解决了 gcc 5 升级的问题,这让事情变得正常。我要尝试它(事情终于又开始工作了......为什么要搞砸它?),但我想知道是否可以删除我在~/.R/Makevars 中设置的变量(同样,请参见下面的解决方案)。

【问题讨论】:

标签: r gcc homebrew gcc4.9


【解决方案1】:

从源代码重建 R 为我解决了同样的问题。

brew reinstall r --build-from-source

【讨论】:

  • 现在正在尝试,但它似乎卡在下载...也许它正在编译?希望这有效!谢谢!
  • 重新安装失败(我认为还有其他问题),但我删除了r 并尝试使用--build-from-source 选项进行安装,但失败了。 (见有问题的编辑)。但是,我确实认为从源代码构建导致从源代码构建依赖项之一(我没有命令行输出......事情崩溃了,我重新启动),我认为这解决了一些与gcc 升级。如果你的答案是解决问题的步骤,我会选择你的答案——让我知道!
【解决方案2】:

this commit 解决了这个问题,为 R 提供了新瓶子。请确保您使用 brew updatebrew upgrade r

【讨论】:

  • 很高兴知道!我想知道为什么这在早些时候不起作用……我今天早上正在更新和升级,但它没有起作用。由于我正在工作,我可能还不会这样做......以防万一=)。谢谢!!
  • 另外,提交可能是事情开始起作用的原因......有没有办法判断这是否是因为我做了什么而不是提交?一方面,我不想选择您的答案作为解决方案,因为它不是一个解决方案,而是一个“它已修复!”,但同时,如果原因,我不想选择另一个答案事情之所以奏效是因为提交。
  • 如果您重新安装了 R 并且它从瓶子中“倒入”到 /usr/local/Cellar/r/3.2.0_1 中,那么您使用的是最新的公式修订版。从源代码重建也应该可以解决问题,尽管修订版(添加了 _1)仍会触发升级(请参阅brew outdated)。
  • 我遇到的问题非常相似,但似乎没有这样解决。
  • 解释一下:(评论编辑超时):我尝试了 brew update 然后是 brew upgrade r,但我认为它可能仍然缺少库级别?当我运行 R 时,它想使用一个名为“6”的库级别,但只有一个库级别“5”。我得到 dyld:库未加载:/usr/local/opt/gcc/lib/gcc/6/libgfortran.3.dylib。但这确实存在于“5”之下。也就是说,有一个/usr/local/opt/gcc/lib/gcc/5/libgfortran.3.dylib(但/6/下没有。
【解决方案3】:

这不是一个完整的修复(它使用旧的 gcc 版本),但它让我再次运行:

  1. brew tap homebrew/homebrew-versions
  2. brew install gcc48
  3. brew install r
    • 注意:我运行了brew install r --build-from-source(重新安装不起作用),它重建了 something,但不是 r(它失败了)。它可能对这项工作负有部分责任。如果是,请告诉我!如果他的回答是成功的原因,我想给 @lmw 表扬。
  4. 编辑 ~/.R/Makevars 并添加以下行(根据需要编辑路径):

    CC=/usr/local/Cellar/gcc48/4.8.4/bin/gcc-4.8
    CXX=/usr/local/Cellar/gcc48/4.8.4/bin/g++-4.8
    CFLAGS=-std=c99
    
  5. 运行r

  6. (如果您要安装生物导体)

    source("http://bioconductor.org/biocLite.R")
    biocLite()
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 2015-03-11
    • 1970-01-01
    • 2018-04-26
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多