94 votes

R install.packages renvoie "failed to create lock directory" (échec de la création du répertoire de verrouillage)

J'obtiens cette erreur en téléchargeant le paquet 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’
...

Comme ma machine est sur un cluster d'ordinateurs, je l'ai essayé sur différents nœuds, et j'ai pris soin de supprimer les fichiers temporaires téléchargés dans /tmp. Ce qui est étrange, c'est que j'ai les droits d'écriture dans /home/me/src/Rlibs/. Mes questions sont donc les suivantes :

  1. pourquoi R veut-il avoir les droits d'écriture dans /home alors qu'il n'a besoin que des droits d'écriture dans /home/me/ ?
  2. comment puis-je corriger l'erreur ?

> 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

172voto

jimmyb Points 1228

Sur les systèmes de fichiers NFS, il n'est parfois pas évident de savoir ce que vous devez fermer.

La meilleure façon d'éviter cela est d'utiliser l'option --no-lock sur la ligne de commande, c'est-à-dire :

R CMD INSTALL --no-lock <pkg>

Dans R, vous pouvez faire cela à partir de votre commande en utilisant :

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

38voto

Sina Points 632

Cela se produit lorsque l'installation de votre dernier paquet s'est interrompue anormalement. Pour résoudre ce problème, vous devez supprimer le fichier verrouillé. Par exemple, exécutez cette commande dans la console R :

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

J'espère que cela vous aidera !

10voto

Ransingh Ray Points 41

Le moyen le plus simple d'éviter ce problème est d'exécuter la ligne suivante avant d'installer un paquetage

options("install.lock"=FALSE)

Essayez ensuite la commande install.packages("nom_du_paquet") pour installer le paquet. L'erreur 00LOCK n'apparaît pas.

0voto

Amir Points 822

Cela peut également se produire lors de la mise à niveau vers une version majeure du R. Certaines mises à niveau majeures vous obligent à reconstruire vos paquets, par exemple R 4.0. Dans mon cas, j'avais installé R en utilisant Homebrew, brew install R et l'a maintenu pendant longtemps, mais lorsque j'ai mis à jour vers 4, j'ai dû recompiler les paquets et j'ai rencontré ce problème.

Pour le résoudre, vous devez vous assurer que Homebrew supprime les restes de votre ancienne installation R. Dans la configuration par défaut, vous pouvez les trouver ici, /usr/local/lib/R . J'ai eu des cas de 3.5 y 3.6 en plus du reste de l'interne de R. Vous pouvez supprimer tout ce qui se trouve là, et réinstaller R, et tout devrait fonctionner correctement. Ou bien supprimez simplement l'ancienne version de R, et videz le répertoire 4.0 . Je recommande cependant de faire une installation propre.

Donc, si vous maintenez votre R en utilisant Homebrew et avez rencontré ce problème, voici comment le résoudre :

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

-1voto

PatrickC Points 9

J'ai rencontré un problème similaire sous Windows 7 :

Erreur dans install.packages : ERROR : échec du verrouillage du répertoire ' D:\Program Fichiers \R\R -3.6.2 \library pour la modification.

J'ai résolu ce problème avec la commande ci-dessous dans la console R :

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

J'espère que cela aidera les utilisateurs de Windows...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X