automatically update R packages, Bioconductor is annoying as usual
1 cause
看到新发布的 BiocManager 已经改过自新,我觉得是时候完善一下 systemctl for update R packges 了。这回应该两行就够,简单明了:
::update_packages(upgrade = T)
remotes::install(update = T, ask = F) BiocManager
然而,……
2 Bioconductor 还是一如既往地烦人
The first problem is
SSL conect error
, later I find it because BiocManager wants to access https://bioconductor.org/config.yamlAfter the network recovers, BiocManager 的另一个问题是总想着更新 Recommends 的包,但是这是由 apt 管理,用户没权限,然后就报错罢工。我仔细看了参数,无法像
update.packages()
那样指定更新哪些包。后来尝试让R不要找
/usr/lib/R/library/
,而使用我指定的目录,结果是至少在 Linux 会很麻烦。
够了,再用 Bioconductor 出品的东西我就不打农药1!!
3 向 remotes 求救
转去鼓捣 remotes::install_bioc()
:
<- .packages(T)
pkgs <- sapply(pkgs, utils::packageDescription, fields = 'biocViews')
is_bioc <- pkgs[!is.na(is_bioc)] bioc_pkgs
可惜是直接装,不能像 GitHub 那样比较 sha1。
4 简单粗暴的解决方法
狂人余光创倒是提供了点 思路:setRepositories(ind = 1:2)
。有了这条命令之后,不管是 update.packages()
还是 remotes::update_packages()
都能同时帮你更新 CRAN 和 BioConductor 的包了(只需要一行就够,岂不爽哉)。
有一点需要注意,不过对我而言倒没什么问题 2:
Bioconductor和R版本绑定,为了确保用户不把包安装在错误的版本上。… 请确保你一直在使用最新版本的R。
5 后记
顺便记一下,remotes::package_deps(.packages(T)) %>% tibble::as_tibble()
能提供我以前很想要的关于包的信息。