最近こんなエラーが出る。↓はdlm
パッケージのZIPを取ってきて解凍してそれをインストールしようとしたとき(tools::Rcmd()
はR 3.3.0から加わった関数)
tools::Rcmd("INSTALL . --install-tests --debug") #> processing '.' #> a directory #> * installing to library 'C:/Users/user1/Documents/R/win-library/3.3' #> * build_help_types= #> * DBG: 'R CMD INSTALL' now doing do_install() #> * created lock directory 'C:/Users/user1/Documents/R/win-library/3.3/00LOCK-dlm' #> * installing *binary* package 'dlm' ... #> cp: unknown option -- ) #> Try '/usr/bin/cp --help' for more information. #> Warning: running command 'cp -R . "C:/Users/user1/Documents/R/win-library/3.3/dlm" || ( tar cd - .| (cd "C:/Users/user1/Documents/R/win-library/3.3/dlm" && tar -xf -))' had status 1 #> ERROR: installing binary package failed #> * removing 'C:/Users/user1/Documents/R/win-library/3.3/dlm' #> * restoring previous 'C:/Users/user1/Documents/R/win-library/3.3/dlm' #> Warning message: #> running command '"C:/PROGRA~1/R/R-33~1.0/bin/x64/Rcmd.exe" INSTALL . --install-tests --debug' had status 1
同じエラーを報告している人がちらほらいる。
https://groups.google.com/forum/#!topic/rdevtools/qxA5d9-9gPE
ソースを読む
do_install()
とあったので適当にr-sourceのレポジトリを検索すると、install.Rというファイルに行きつく。ここで、cp
を使ってるのはこの関数らしい。
## Unix only do_install_binary <- function(pkg, instdir, desc) {
Unix only…?
ソースをもうちょい読む
通常のinstall.packages()
でバイナリをインストールするとき、Windowsはここを通るはず。
if (WINDOWS && grepl("\\.zip$", pkg)) { pkg_name <- basename(pkg) pkg_name <- sub("\\.zip$", "", pkg_name) pkg_name <- sub("_[0-9.-]+$", "", pkg_name) utils:::unpackPkgZip(pkg, pkg_name, lib, libs_only) return() }
ここが、install_github()
だとZIPファイルを解凍しちゃうのでgrepl("\\.zip$", pkg)
がFALSE
になって処理がスキップされる。
なんでこうなるのかは不明。みんな困ってないんでしょうか...