【问题标题】:Addressing the "cannot remove prior installation of package" error when updating multiple packages at once解决一次更新多个软件包时“无法删除先前安装的软件包”错误
【发布时间】:2018-07-24 04:44:23
【问题描述】:

这是一个反复出现的问题,例如

我多次遇到这个问题。最烦人的是当它与一堆包一起发生时;例如我做类似的事情

update.packages(ask = FALSE)

并得到一些这样的错误。但该错误具有误导性,因为 R 倾向于实际上删除旧的软件包版本——但随后不会安装新版本。一旦发生这种情况,您将无法使用update.packages 修复它;您必须从头开始重新安装。

这个问题最令人沮丧的方面是它经常在安装依赖项时发生,例如我可能会成功更新dplyr,但在此过程中Rcpp 已被删除。现在我无法加载dplyr,因为缺少Rcpp,所以我需要重新安装Rcpp

我当前的解决方法(当卸载的软件包数量很大时)是关闭我所有的 R 会话,使用基本 R GUI(即不是 RStudio 或 RTVS)打开一个新会话并执行

lapply(dir(.libPaths()), install.packages)

这会重新安装我的整个库。这是矫枉过正。

有没有更好的方法来检查.libPaths() 中的哪些文件夹实际上包含包,以便我只重新安装丢失的包?

或者:有没有更好的方法来检查缺少的包依赖关系?

【问题讨论】:

  • 我看到我的问题被否决了几次。如果你能解释为什么这个问题被认为质量差,我很乐意改进它。

标签: r package-management


【解决方案1】:

一个策略是做

setdiff(dir(.libPaths()), .packages(all = TRUE))

获取库中似乎实际上不包含包的目录列表。现在我要重新安装的软件包列表要少得多。

我不确定它是否万无一失,但总比重新安装我的整个库要好。

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多