103

I get this error when downloading the Rcpp package:

> 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’
...

As my machine is on a computer cluster, I've tried it on different nodes, and I was careful to delete the temporary files downloaded in /tmp. What is strange is that I have rights to write in /home/me/src/Rlibs/. So my questions are:

  1. why does R want to have writing rights in /home while it only needs writing rights in /home/me/?
  2. how can I fix the error?

> 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
tflutre
  • 3,354
  • 9
  • 39
  • 53

5 Answers5

191

On NFS file systems it is sometimes not obvious what things you have to close.

The best way to avoid this is to use the --no-lock argument on the command line, i.e.:

R CMD INSTALL --no-lock <pkg>

From within R, you can do this from within your command using:

install.packages("Rcpp", dependencies = TRUE, INSTALL_opts = '--no-lock')
Konrad Rudolph
  • 530,221
  • 131
  • 937
  • 1,214
jimmyb
  • 4,227
  • 2
  • 23
  • 26
  • 5
    This resolved the issue for me too, but I'm with @Garini, what is causing the file lock? – rjkunde Dec 19 '17 at 16:33
  • @rjkunde, I'm also trying to understand this issue. I see the folder 00LOCK is sometimes created when I already have the package (or a dependency) installed and there is a problem (not an error) in `install.packages()`. – Ale Oct 17 '18 at 08:37
  • 1
    In my experience, the shared file system NFS was mostly to blame. Someone with much more knowledge of the package management file-handling will hopefully speak up and correct me, but I assumed it was related to multiple distributed R processes spread over SGE cluster trying to interact with the package index files in LIB_PATH and the latency of cleaning up lock file on NFS file system. – jimmyb Oct 18 '18 at 08:31
  • Thanks for the insight! Since my problem was that I was unable to remove the 00LOCK folder within the same R session because of a NFS file that cannot be removed, when installing a package I go through every package that will be imported (and the package itself), detach it, remove it, install it again, and attach it again. In this way it seems so far that no folder 00LOCK remains after all packages are installed. This without using `INSTALL_opts = c('--no-lock')`. – Ale Oct 18 '18 at 10:59
  • Interesting, I'm hitting this issue on OS X without any NFS. But, your solution worked. – carbocation Jan 23 '20 at 15:46
  • This solution helped me through many 00Lock package installation issues. Thanks for posting this! – Alperen Taciroglu Jul 21 '20 at 12:52
  • Note that on the command line `R CMD INSTALL --no-lock ` may error if you are installing over a previous installation, giving the _ERROR: cannot remove earlier installation, is it in use?_ message followed by an autoremoval of the old installation. So just run `R CMD INSTALL --no-lock ` **again** and that should complete the installation. – Timothy M Pollington Jun 11 '21 at 15:42
  • Alternatively this can also be applied in the *RStudio* GUI using `Build > Configure Build Tools > Build Tools left-hand tab > Install and Restart --- R CMD INSTALL additional options:` = `--no-lock` This means you can then just choose `Build > Install and Restart`, (though twice! for the same reason as my comment above for the command line. – Timothy M Pollington Jun 11 '21 at 21:00
45

This happens when your last package installation has interrupted abnormally. to fix this you should remove the locked file. For example Execute this command in R console:

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

Hope this helps!

Sina
  • 722
  • 7
  • 9
18

The easiest way to avoid this issue is before installing any package run the line below

options("install.lock"=FALSE)

Then try the install.packages("name_of_package") to install the package. The 00LOCK error would not come.

0

This can happen when you are upgrading to a major version of the R as well. Some major upgrades require you to rebuild your packages, e.g., R 4.0. In my case, I had installed R using Homebrew, brew install R and maintained it for a long time, but when I upgraded to 4, I had to build the packages again and ran into this problem.

To resolve it, you need to make sure that Homebrew removes leftovers of your older R installation. In default setting, you can find them here, /usr/local/lib/R. I had instances of 3.5, and 3.6 besides the rest of R's internal. You can remove everything there, and install R again, and everything should work fine. Or just remove the older version of R, and empty the 4.0. I recommend doing a clean install though.

So, if you are maintaining your R using Homebrew and ran into this problem, here is how you fix it:

brew uninstall R
rm -r /usr/local/lib/R
brew install R
Amir
  • 1,087
  • 1
  • 9
  • 26
-1

I encountered a similar problem running windows 7:

Error in install.packages : ERROR: failed to lock directory ‘D:\Program Files\R\R-3.6.2\library’ for modifying.

I solved this problem with below command in the R-console:

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

Hope this help windows users...

ZF007
  • 3,708
  • 8
  • 29
  • 48
PatrickC
  • 9
  • 2