【发布时间】:2018-11-27 09:56:57
【问题描述】:
我正在维护一个经常更新包的openCPU (R API) 实例。 OpenCPU(明智地)将自己的核心包分开到不同的文件夹中,这样它们就不会意外地与已安装的版本脱离同步。
但是,这可能会导致在用户文件夹中安装重复的软件包,当 openCPU API 尝试卸载并重新附加软件包以获得更新版本时,这又会导致错误。我在尝试更新软件包时经常会导致这些问题。
我通常使用这个 sn-p 来检查它们。
ocpubasics <- rownames(installed.packages(lib.loc ="/usr/lib/opencpu/library"))
userpkgs <- rownames(installed.packages(lib.loc="/usr/local/lib/R/site-library"))
(dupe_pkgs <- userpkgs[ userpkgs %in% ocpubasics])
remove.packages(dupe_pkgs, lib="/usr/local/lib/R/site-library")
但是,这并不能涵盖所有情况(因为它们是五个库路径),并且还会删除与版本不匹配的重复项(这不会真正造成伤害,并且有时是安装软件包所必需的)。所以,我想知道是否有人编写了一个函数,给定一个库路径向量,检查是否有任何包在不同的库路径中安装了不匹配的版本。
【问题讨论】: