解决一次更新多个包时的 "cannot remove prior installation of package" 错误
Addressing the "cannot remove prior installation of package" error when updating multiple packages at once
这是一个反复出现的问题,例如
- Error in install.packages : cannot remove prior installation of package ‘DBI’
- Unable to install package forecast in R
- Unable to install package zoo
这个问题我遇到过很多次了。最烦人的是当它出现在一堆包中时;例如我做了类似
update.packages(ask = FALSE)
并得到一些这样的错误。但是这个错误具有误导性,因为 R 倾向于 实际上删除 旧的包版本---但随后不安装新版本。一旦发生这种情况,您无法使用 update.packages
修复它;你必须从头开始重新安装它。
这个问题最令人沮丧的方面是它经常在安装 dependencies 时发生,例如我可能会成功更新 dplyr
,但在此过程中 Rcpp
被删除了。现在我无法加载 dplyr
因为 Rcpp
丢失了,所以我需要重新安装 Rcpp
.
我当前的解决方法(当卸载的包数量很大时)是关闭我的所有 R 会话,使用基本 R GUI(即不是 RStudio 或 RTVS)打开一个新会话并执行
lapply(dir(.libPaths()), install.packages)
这会重新安装我的整个库。这太过分了。
有没有更好的方法来检查 .libPaths()
中的哪些文件夹实际包含软件包,以便我只重新安装丢失的软件包?
或者:是否有更好的方法来检查丢失的包依赖项?
一个策略是做
setdiff(dir(.libPaths()), .packages(all = TRUE))
获取库中似乎实际上不包含包的目录列表。现在我要重新安装的软件包列表要少得多。
我不确定它是否万无一失,但总比重新安装我的整个库要好。
这是一个反复出现的问题,例如
- Error in install.packages : cannot remove prior installation of package ‘DBI’
- Unable to install package forecast in R
- Unable to install package zoo
这个问题我遇到过很多次了。最烦人的是当它出现在一堆包中时;例如我做了类似
update.packages(ask = FALSE)
并得到一些这样的错误。但是这个错误具有误导性,因为 R 倾向于 实际上删除 旧的包版本---但随后不安装新版本。一旦发生这种情况,您无法使用 update.packages
修复它;你必须从头开始重新安装它。
这个问题最令人沮丧的方面是它经常在安装 dependencies 时发生,例如我可能会成功更新 dplyr
,但在此过程中 Rcpp
被删除了。现在我无法加载 dplyr
因为 Rcpp
丢失了,所以我需要重新安装 Rcpp
.
我当前的解决方法(当卸载的包数量很大时)是关闭我的所有 R 会话,使用基本 R GUI(即不是 RStudio 或 RTVS)打开一个新会话并执行
lapply(dir(.libPaths()), install.packages)
这会重新安装我的整个库。这太过分了。
有没有更好的方法来检查 .libPaths()
中的哪些文件夹实际包含软件包,以便我只重新安装丢失的软件包?
或者:是否有更好的方法来检查丢失的包依赖项?
一个策略是做
setdiff(dir(.libPaths()), .packages(all = TRUE))
获取库中似乎实际上不包含包的目录列表。现在我要重新安装的软件包列表要少得多。
我不确定它是否万无一失,但总比重新安装我的整个库要好。