web-dev-qa-db-ja.com

R install.packagesが「ロックディレクトリの作成に失敗しました」を返す

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
42
tflutre

これを回避する最善の方法は、コマンドラインで「--no-lock」引数を使用することです。

_R CMD INSTALL --no-lock <pkg>_

NFSファイルシステムでは、閉じる必要があるものが明らかでない場合があります。 R内から、以下を使用してコマンド内からこれを行うことができます。

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

83
jimmyb

これは、最後のパッケージのインストールが異常に中断したときに発生します。これを修正するには、ロックされたファイルを削除する必要があります。たとえば、Rコンソールで次のコマンドを実行します。

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

お役に立てれば!

20
Sina