很高兴和你相遇
这里正在记录我的所思所学
订阅免费邮件通讯接收最新内容
首页 归档 想法 通讯 播客 工具 简历 关于

macOS 10.15 安装R包

早先升级 macOS10.15 电脑 SMC 出了一些问题,试了一些方法都没有解决,无奈只能继续升级到 public beta 版本。

2020/6/15 更新

目前 R macOS 官方安装说明已经更新,地址为 https://mac.r-project.org/tools/


原文

目前的版本信息如下 10.15.1 beta 版本

        <key>ProductBuildVersion</key>
        <string>19B86a</string>
        <key>ProductCopyright</key>
        <string>1983-2019 Apple Inc.</string>
        <key>ProductName</key>
        <string>Mac OS X</string>
        <key>ProductUserVisibleVersion</key>
        <string>10.15.1</string>
        <key>ProductVersion</key>
        <string>10.15.1</string>
        <key>iOSSupportVersion</key>
        <string>13.2</string>

升级了之后 R 下的很多需要编译的软件都用不了了。

原因之一是系统自带的 clang 不支持 -fopenmp,这个需要在 R 官网下载安装 LLVM 预先编译好的 clang 7 。我也尝试过跳过这个 R 官网提供的 clang7,直接通过安装 LLVM 来安装最新版的 clang7.1,但是在 10.15 的系统里直接通过 brew install llvm 也会有不少问题,于是放弃。

除此之外还需要安装 gfortran , 如果去官方安装最新的版本在编译过程中会报 warning。因为 R 提供的 clang7 用的是 gfortran 6.1。这个还是需要去 R 官网提供的链接进行下载。

首先确认自己装了 Xcode command line tools (XCode CLI)

$ xcode-select -p
/Library/Developer/CommandLineTools

如果你之前有旧版本的 gfortran 和 clang 最新好先删除一些文件

# Delete the clang6 binary
sudo rm -rf /usr/local/clang6

# Delete the prior version of gfortran installed
sudo rm -rf /usr/local/gfortran
sudo rm -rf /usr/local/bin/gfortran

# Remove the gfortran install receipts (run after the above commands)
sudo rm -rf /private/var/db/receipts/com.gnu.gfortran.bom
sudo rm -rf /private/var/db/receipts/com.gnu.gfortran.plist

然后安装 clang7 和 gfortran6.1。下载地址:https://cran.r-project.org/bin/macosx/tools/

如果在 10.14 里,这两个装好了后指定 clang7 的路径基本就解决问题。

但是 macOS 10.15 之后 usr 目录下无法新建 include 文件,这就导致 clang 在运行的时候可能使用默认的位置找不到 sdk 目录。

这个坑还需要再进行一些配置。首先要找到实际的 sdk 目录:

$ xcrun --show-sdk-path
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk

然后在 R 的~/.R/Makevars配置文件中指定一些 compilation flags,通过 -isysroot 定义 sdk。如果你发现自己没有这个文件,就新建一个即可。

CFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
CCFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
CXXFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
CPPFLAGS=-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -I/usr/local/include

最后在 ~/.Renviron 里写好 clang7 的路径。按道理这个路径写在 zshrc 里也是可以的,但这边测试的时候 Rstudio 启动 R 还是识别的系统默认 clang。

PATH="/usr/local/clang7/bin:${PATH}"

这些配置写好之后,可以在 R 里通过从 source 装两个软件测试一下。

install.packages(c("Rcpp", "RcppArmadillo", "data.table"), type = "source")

最后的最后,一般情况下或者新手建议不要从 source 去安装软件,就没有任何烦恼了。


本文作者:思考问题的熊

版权声明:本博客所有文章除特别声明外,均采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。

如果你对这篇文章感兴趣,欢迎通过邮箱或者微信订阅我的 「熊言熊语」会员通讯,我将第一时间与你分享肿瘤生物医药领域最新行业研究进展和我的所思所学所想点此链接即可进行免费订阅。


· 分享链接 https://kaopubear.top/blog/2019-10-29-macos15user/