编辑:请参阅最后的修改。
我在github上有一个R包,我正在使用devtools::install_github
来安装它,它也会安装依赖包。
最近,此过程将安装httpuv
作为源包,但在Mac中进行编译会遇到automake
(类似this)的错误。我安装了automake
,然后clang: error: unsupported option '-fopenmp'
出错了。
问题和可能的解决方案1 2似乎相当复杂。我认为httpuv
的CRAN版本可能对我有用,我不希望我的用户经历这么多错误并修复编译器错误。
我想从二进制文件中安装CRAN的所有依赖包。对于某些需要更新版本的软件包,我已在我的软件包描述中使用remote
部分指定了它。
我检查了install_github
,然后是install
,然后是install.packages
。似乎二进制vs源包的默认行为是
替代(和当前默认值)是“both”,意思是“使用” 二进制如果可用和当前,否则尝试源'。行动如果 有源包是首选但可能包含代码 需要编译的是由 getOption( “install.packages.compile.from.source”)。
我的getOption("install.packages.compile.from.source")
是interactive
。这实际上是我的首选行为。但是我从未看到过互动提示。
我尝试在type = "binary"
中提供install_github
参数,但它似乎不起作用,也许它没有传递给每个依赖包安装?
修改
我发现情况有点复杂:
shiny
安装remote
github版本。 shiny
指定在httpuv
部分中安装remote
github版本。所以这实际上是预期的行为。shiny
。编辑2:它比我以前的发现更复杂。
remote
部分,据说只需要CRAN版本。但是install_github
仍然从github安装大多数依赖项。install_github
找到了这些信息并再次“升级”它们,即使它们中的一些没有变化。这里真正的问题是,如果依赖包已经是新的,则不应该安装它。它可能是a bug of devtools。
答案 0 :(得分:2)
install_github
将参数传递给devtools::install
,而upgrade_dependencies= FALSE
甚至dependencies = FALSE
可能就是你所追求的:
install_github("you/urPackage", upgrade_dependencies = FALSE)