当二进制文件尚未启动时,按源请求最新的 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 结果所示
我希望帮助用户安装来自 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 结果所示