如何以无人值守的方式更新所有软件包?

时间:2018-07-07 08:36:39

标签: r packages updates

我想要一个无人值守的解决方案来更新当前R版本中的所有软件包,因此我编写了一个实质上可以令人满意地工作的函数。

updPcks <- function() {
  l <- length(.packages()) != 7  # check if 'other' packages are loaded
  if (l) {
    lapply(paste('package:', names(sessionInfo()$otherPkgs), sep=""), detach,
           character.only=TRUE, unload=TRUE)  # unload 'other' packages
  }
  update.packages(ask=FALSE)
}

但是,至少在两种情况下,该过程会因弹出对话框而中断,例如

  

“您要从源安装需要编译的软件包吗?”

  

“您想改用个人图书馆吗?”

在这种情况(以及其他情况下)中,仅选择 “否” (但避免降级!),就目前和节省时间而言就足够了。

我可能不希望停止更新过程,因此可能分别抛出错误消息或警告。无论如何,应该像手动更新过程中那样保留控制台中有关失败和成功的所有信息。

有没有办法做到这一点?

> sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

Matrix products: default

locale:
[1] LC_COLLATE=German_Switzerland.1252  LC_CTYPE=German_Switzerland.1252    LC_MONETARY=German_Switzerland.1252
[4] LC_NUMERIC=C                        LC_TIME=German_Switzerland.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] compiler_3.5.0 tools_3.5.0    yaml_2.1.19 

0 个答案:

没有答案