我希望帮助用户从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'
任何解决方案?
答案 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结果所示