CRAN提供了适用于Windows和macOS的软件包的二进制版本。但是,当在非官方CRAN R发行版上运行时,install.packages()
将仅使用这些二进制版本。如果使用不同的R发行版(例如,在macOS上使用Homebrew或MacPorts)或自己从源代码编译R,则install.packages()
将不会下载二进制文件,而是会从源代码编译所有软件包。
问题:
install.packages()
为什么会拒绝从CRAN获取二进制文件,当在非官方R发行版上运行时?我认为这涉及到二进制兼容性的一些问题,我希望获得一些技术上的洞见来解释原因。- 二进制兼容性是如何进行验证的?
install.packages()
如何判断是否可以使用二进制文件? - 需要什么才能生产一个与CRAN二进制文件兼容并且能被
install.packages()
检测到兼容的单独的R发行版?
R.version$os
是什么吗? - Ben Bolkerinstall.packages("dplyr", type = "mac.binary")
安装二进制文件吗?如果你在控制台中输入getOption("pkgType")
,会得到什么结果?如果你运行options(pkgType = "both")
然后正常地执行install.packages("dplyr")
,这会给你提供二进制文件吗? - Allan Cameroninstall.packages()
是如何做出决定的。在macOS上的CRAN R中,我看到darwin17.0
,因为它是为macOS 10.13或更高版本编译的。在MacPorts的R中,我看到darwin18.7.0
,因为那是我正在使用的macOS 10.14.6的标识符。 - Szabolcstype = "mac.binary"
安装二进制版本。getOption("pkgType")
是"source"
。在设置options(pkgType = "both")
后,install.packages()
会发出此错误:type == "both" can only be used on Windows or a CRAN build for macOS
。这表明限制是有意的。 - Szabolcsinstall.packages()
和type="mac.binary"
? - Allan Cameron