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

时间:2017-04-07 10:35:07

标签: r install.packages

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

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

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

但是,用户可以通过转到CRAN页面查找最新来源,查找直接链接,并将其用作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'

任何解决方案?

1 个答案:

答案 0 :(得分:2)

在尝试从源代码构建时,我确实收到了一整套警告和错误,主要是因为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,以及一整套其他软件包btw。由于XML(以及可能还有其他)软件包的编译错误,它如上所述失败。

从源

安装特定/旧版本

如果您要安装特定版本,只需下载相关版本的.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结果所示

enter image description here