R install.packages 返回“无法创建锁定目录”

问题描述 投票:0回答:6

我在下载 Rcpp 包时遇到此错误:

> install.packages("Rcpp", dependencies=TRUE)
Installing package(s) into ‘/home/me/src/Rlibs’ (as ‘lib’ is unspecified)
trying URL 'http://cran.us.r-project.org/src/contrib/Rcpp_0.10.2.tar.gz'
Content type 'application/x-gzip' length 2380089 bytes (2.3 Mb)
...
Warning in dir.create(lockdir, recursive = TRUE) :
  cannot create dir '/home', reason 'Permission denied'
ERROR: failed to create lock directory ‘/home/me/src/Rlibs/00LOCK-Rcpp’
...

由于我的机器是在计算机集群上,所以我在不同的节点上都尝试过,并且我很小心地删除了/tmp中下载的临时文件。奇怪的是我有权限在/home/me/src/Rlibs/中写入。所以我的问题是:

  1. 为什么R想要对/home有写权限,而它只需要对/home/me/有写权限?
  2. 如何修复该错误?

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-redhat-linux-gnu (64-bit)
locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=C                 LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
loaded via a namespace (and not attached):
[1] tools_2.15.2
r package rcpp
6个回答
195
投票

在 NFS 文件系统上,有时并不明显需要关闭哪些内容。

避免这种情况的最佳方法是在命令行上使用

--no-lock
参数,即:

R CMD INSTALL --no-lock <pkg>

在 R 中,您可以使用以下命令在命令中执行此操作:

install.packages("Rcpp", dependencies = TRUE, INSTALL_opts = '--no-lock')

47
投票

当您上次安装软件包异常中断时,就会发生这种情况。要解决此问题,您应该删除锁定的文件。 例如在 R 控制台中执行此命令:

unlink("/home/me/src/Rlibs/00LOCK-Rcpp", recursive = TRUE)

希望这有帮助!


18
投票

避免此问题的最简单方法是在安装任何软件包之前运行以下行

options("install.lock"=FALSE)

然后尝试 install.packages("name_of_package") 安装该软件包。 00LOCK 错误不会出现。


0
投票

当您升级到 R 主要版本时,也可能会发生这种情况。一些主要升级需要您重建软件包,例如 R 4.0。就我而言,我使用 Homebrew 安装了 R,

brew install R
并维护了很长一段时间,但是当我升级到 4 时,我不得不再次构建软件包并遇到了这个问题。

要解决此问题,您需要确保 Homebrew 删除旧 R 安装的剩余内容。在默认设置下,您可以在这里找到它们,

/usr/local/lib/R
。除了 R 内部的其余部分之外,我还有
3.5
3.6
的实例。您可以删除那里的所有内容,然后再次安装 R,一切都会正常工作。或者只是删除旧版本的 R,并清空
4.0
。不过我建议进行全新安装。

所以,如果您使用 Homebrew 维护 R 并遇到了这个问题,请按照以下方法修复它:

brew uninstall R rm -r /usr/local/lib/R brew install R
    

0
投票

pak::pak("package-name")


    


-1
投票
我在运行 Windows 7 时遇到了类似的问题:

install.packages 中出现错误:错误:无法锁定目录“D:\Program Files\R\R-3.6.2\library”进行修改。

我在 R 控制台中使用以下命令解决了这个问题:

unlink("D:\\Program Files\\R\\R-3.6.2\\library/00LOCK", recursive = TRUE)



希望这对 Windows 用户有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.