当二进制文件尚未启动时,按源请求最新的 CRAN 包版本

Request the latest CRAN package version by source when binaries not yet up

我希望帮助用户安装来自 CRAN 的软件包,其中最新源比 Windows 和 MacOS 二进制文件更新。

因此,举一个具体的例子,install.packages("umx") 安装最新的二进制文件,但这比 CRAN 上接受的源版本旧。

install.packages 不会提醒用户有更新的来源可用。

但是,用户可以通过转到 CRAN 页面、查找直接 link 并将其用作 install.packages 中 pkgs 的输入来获取最新源代码:

browseURL("https://cran.r-project.org/web/packages/umx/index.html") 
install.packages("https://cran.r-project.org/src/contrib/umx_1.7.5.tar.gz")
# newest version (1.7.5) installed from source.

但我想要一种更自动化的方法来请求最新的源代码。我认为请求 type = "source" 会获得最新的源代码,但它试图获得二进制文件可用的旧 (1.55) 版本的源代码,但失败了:

install.packages("umx",  type= "source")
... URL 'https://cran.rstudio.com/src/contrib/umx_1.5.5.tar.gz': status was '404 Not Found'

有什么解决办法吗?

我在尝试从源代码构建时确实收到了一整套警告和错误,主要是因为 XML 不想干净地构建。如果您使用 type = "source" 安装,所有依赖项也将从源安装。但是,如果我这样做:

install.packages("umx")

它确实警告我有更新的源版本,它从源安装 1.7.5 版,同时将所有依赖项安装为二进制文件。这是因为参数 type 的默认选项是 "both",这意味着在 Windows 上它将安装二进制文件,除非没有二进制文件或更新的源版本。

如果您没有看到该警告,请尝试使用

强制执行
install.packages("umx", type = "both")

注意这需要安装 Rtools。 Rtools 不是一个包,而是一个从源代码构建包所需的工具集。 Rtools 可在 CRAN 下载。请务必仔细阅读安装说明!

根据今天和 R3.3.3,

install.packages("umx", type = "source") 

确实尝试从源代码安装 umx 版本 1.7.5,顺便说一句,还有一整套其他软件包。由于XML(可能还有其他)包的编译错误,它如上所述失败。

正在从源安装 specific/older 个版本

如果要安装特定版本,只需下载相关版本的.tar.gz文件,存储在您的计算机上并安装使用:

install.packages("path/to/umx_1.7.5.tar.gz", type = "source", repos = NULL)

这将安装下载的 .tar.gz 文件,但您必须确保在从源代码构建此包之前安装了所有依赖项。

检查是否有问题

请记住,从源代码安装并不总是一个明智的主意。您应该至少检查 CRAN 上的包的检查结果。在这种情况下,版本 1.7.5 似乎会引起问题,如 https://cran.r-project.org/web/checks/check_results_umx.html

中不同构建的 CRAN 结果所示