我有一个需要INLA的包,它不是托管在CRAN或标准GitHub存储库上的。有多个SO问题详细说明了如何在个人计算机(如this )上安装软件包,甚至将其作为dependency in a package提及。
通常建议在个人计算机上安装的两种方法是:
直接从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)现在,这些文件适用于个人计算机,但不适用于描述文件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,我不知道如何在描述文件中传递(或者甚至是可能的) ref、subdir和build参数。
以前的包使用了托管在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,并且机器能够从那里安装和加载。唯一的问题是,我需要定期更新这个tarball的静态链接,并且更喜欢引用稳定的构建,或者直接从上面的INLA网站,或者使用传递的其他参数的hrue/inla代码库。直接引用这些链接还有一个好处,那就是当我的包重新安装在一台机器上时,它会识别该机器上是否安装了最新版本的INLA。有没有办法在描述文件中实现这一点?
发布于 2021-08-03 15:09:42
这不是一个完美的答案,但也许你能做的是从INLA的新github存储库添加INLA的稳定分支的zip url:
url::https://github.com/hrue/r-inla/archive/refs/heads/stable.zip因此,这将始终安装包的最新稳定版本。
https://stackoverflow.com/questions/68589179
复制相似问题