R包中的非标准遥控器包INLA

Non-standard Remotes package INLA in R package

我有一个包需要 INLA, which is not hosted on CRAN or a standard GitHub repository. There are multiple SO questions detailing how to install the package on a personal machine, such as this, or even mentions it as a

通常推荐在个人计算机上安装的两种方式是:

直接来自 INLA 网站

install.packages("INLA",repos=c(getOption("repos"),INLA="https://inla.r-inla-download.org/R/stable"), dep=TRUE)

来自 GitHub 主机

devtools::install_github(repo = "https://github.com/hrue/r-inla", ref = "stable", subdir = "rinla", build = FALSE)

现在,这些适用于个人机器,但不适用于 DESCRIPTION 文件 Remotes: 部分。

如果我们这样做 url::https://inla.r-inla-download.org/R/stable,则会出现无法识别文件扩展名的错误。

 Error: Error: Failed to install 'unknown package' from URL:
  Don't know how to decompress files with extension 

如果我们这样做 github::hrue/r-inla,我不知道如何传递(或者如果可能的话)refsubdirbuild 参数描述文件。

以前的软件包使用托管在 GitHub 上的 INLA 代码的只读镜像,仅用于此目的,在此 repo,然后仅使用 github::inbo/INLA。但是,此存储库已过时。

当前解决方案

我正在做的是直接引用主网页上托管的 tarball。

url::https://inla.r-inla-download.org/R/stable/src/contrib/INLA_21.02.23.tar.gz

此解决方案有效,并通过 CI 并且机器能够从那里安装和加载。唯一的问题是我需要定期将静态 link 更新到这个 tarball,并且更愿意参考稳定版本,或者直接从上面的 INLA 网站,或者 hrue/inla repo 与其他论据通过。直接引用那些 links 还有一个好处,当我的包被重新安装在一台机器上时,它会识别该机器上是否安装了最新版本的 INLA。有没有办法在 DESCRIPTION 文件中实现这一点?

这不是一个完美的答案,但也许您可以从 github 的新 github 存储库中添加 INLA 稳定分支的 zip url INLA:-

url::https://github.com/hrue/r-inla/archive/refs/heads/stable.zip

因此,这将始终安装最新稳定版本的软件包。