如何让devtools::install_github从CRAN安装依赖而非编译源码
解决GitHub R包安装时依赖httpuv的编译问题
遇到这种源码编译依赖包的麻烦确实头疼,尤其是Mac上clang的-fopenmp不兼容问题。要让devtools::install_github()优先从CRAN安装预编译的binary依赖包,而不是编译源码,你可以试试以下几种方法:
方法1:先手动安装CRAN版httpuv,再跳过依赖安装
首先确保httpuv是CRAN的预编译版本:
install.packages("httpuv", type = "binary")
type = "binary"会强制安装Mac上的预编译包,直接跳过源码编译环节。
然后安装你的GitHub包时,跳过依赖安装(因为已经手动装好了所需依赖):
devtools::install_github("你的GitHub包完整路径", dependencies = FALSE)
方法2:用remotes指定依赖安装类型
如果你不想手动逐个装依赖,可以用remotes包来统一处理依赖的安装类型:
- 先安装remotes(如果还没装):
install.packages("remotes")
- 安装包的依赖,指定从CRAN获取binary版本:
remotes::install_deps("你的GitHub包路径", type = "binary")
- 最后安装你的GitHub包:
devtools::install_github("你的GitHub包完整路径")
方法3:设置全局选项默认优先binary包
如果希望后续所有包安装都优先用binary版本,可以设置全局选项:
options(pkgType = "binary")
之后再运行devtools::install_github(),它会优先从CRAN获取预编译的依赖包,只有当没有binary版本可用时才会尝试源码编译。
补充说明
Mac上的clang编译器默认不支持-fopenmp编译选项,而源码版httpuv的编译会用到这个选项,这就是你遇到错误的核心原因。CRAN提供的binary版本已经提前处理了这个兼容性问题,所以直接安装binary版本就能避开编译错误。
内容的提问来源于stack exchange,提问作者dracodoc
相关产品推荐
相关产品推荐

