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


73

下载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 / me /中拥有写权限,而又想在/ home中具有写权限?
  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

Answers:


139

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

避免这种情况的最佳方法是--no-lock在命令行上使用参数,即:

R CMD INSTALL --no-lock <pkg>

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

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

3
这也为我解决了这个问题,但是我使用@Garini,是什么导致文件锁定?
rjkunde

@rjkunde,我也想了解这个问题。我看到文件夹00LOCK有时是在我已经安装了软件包(或依赖项)并且在中存在问题(不是错误)时创建的install.packages()
Ale

1
以我的经验,共享文件系统NFS主要归咎于此。希望对软件包管理文件处理有更多了解的人会说出来并纠正我,但我认为这与散布在SGE群集上的多个分布式R进程有关,这些进程试图与LIB_PATH中的软件包索引文件进行交互以及清理的延迟NFS文件系统上的锁定文件。
jimmyb

感谢您的见解!因为我的问题是由于无法删除NFS文件,所以我无法在同一R会话中删除00LOCK文件夹,所以在安装软件包时,我会检查将要导入的每个软件包(以及软件包本身),并将其分离,将其删除,重新安装,然后再次连接。这样,到目前为止,安装所有软件包后似乎都没有文件夹00LOCK。这不用了INSTALL_opts = c('--no-lock')
Ale

有趣的是,我在没有任何NFS的OS X上遇到了这个问题。但是,您的解决方案有效。
碳化

29

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

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

希望这可以帮助!


6
删除文件也帮助
亚当李佩雷尔曼

3
有时unlink不删除文件夹广告,有必要重新启动R会话。
Ale

1
为我解决了问题。
Thorgas

递归删除整个目录对我
Mohammed

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

-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用户...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.