R install.packages returns";无法创建锁目录";

R install.packages returns";无法创建锁目录";,r,package,rcpp,R,Package,Rcpp,我在下载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' len

我在下载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/中写作。因此,我的问题是:

  • 为什么R希望在/home中拥有写入权限,而它只需要在/home/me/中拥有写入权限
  • 我如何修复错误


  • 在NFS文件系统上,有时不清楚必须关闭哪些内容

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

    R CMD INSTALL --no-lock <pkg>
    

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

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

    希望这有帮助

    我在运行windows 7时遇到了类似的问题:

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

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

    取消链接(“D:\\Program Files\\R\\R-3.6.2\\library/00LOCK”,recursive=TRUE)


    希望这能帮助windows用户…

    当您升级到R的主要版本时,也会发生这种情况。一些主要升级需要您重新构建软件包,例如R4.0。在我的例子中,我使用自制软件安装了R,
    brew install R
    ,并对其进行了长时间的维护,但当我升级到4时,我不得不再次构建软件包,并遇到了这个问题

    要解决此问题,您需要确保Homebrew删除旧版本R安装的剩余部分。在默认设置中,您可以在这里找到它们,
    /usr/local/lib/R
    。除了R的内部代码之外,我还有
    3.5
    3.6
    的实例。您可以删除那里的所有内容,然后再次安装R,所有内容都应该可以正常工作。或者只需删除旧版本的R,并清空
    4.0
    。但我建议进行一次干净的安装

    因此,如果您在使用自制软件维护R时遇到此问题,请按照以下方法进行修复:

    brew卸载程序
    rm-r/usr/local/lib/r
    brew安装程序
    
    避免此问题的最简单方法是在安装任何软件包之前运行下面的行

    options("install.lock"=FALSE)
    

    然后尝试install.packages(“包的名称”)来安装包。00锁错误不会出现。

    这也解决了我的问题,但我与@Garini在一起,是什么导致了文件锁?@rjkunde,我也在努力理解这个问题。我看到文件夹00LOCK有时是在我已经安装了包(或依赖项)并且
    install.packages()
    中出现问题(不是错误)时创建的。根据我的经验,共享文件系统NFS是主要原因。有人对包管理文件处理有更多的了解,希望他能说出来并纠正我的错误,但我认为这与分布在SGE集群上的多个分布式R进程试图与LIB_PATH中的包索引文件进行交互以及清理NFS文件系统上的锁文件的延迟有关。感谢您的深入了解!由于无法删除NFS文件,我无法在同一个R会话中删除00LOCK文件夹,因此在安装包时,我会检查将要导入的每个包(以及包本身),将其分离、删除、再次安装并再次附加。这样看来,到目前为止,在安装了所有软件包之后,文件夹00LOCK似乎都不存在了。这不需要使用
    INSTALL\u opts=c('--no lock')
    。有趣的是,我在没有任何NFS的OSX上遇到了这个问题。但是,您的解决方案有效。删除该文件也有助于取消链接大多数时间
    不会删除文件夹,并且需要重新启动R会话。为我解决了该问题。递归删除整个目录对我有效
    
    unlink("/home/me/src/Rlibs/00LOCK-Rcpp", recursive = TRUE)
    
    options("install.lock"=FALSE)