2017-04-25 4 views
2

최근에 R을 최신 릴리스 3.4.0으로 업데이트했습니다. R이 네트워크 위치 H:/에 설치되었습니다.R 3.4.0에서 바이너리 패키지 설치

filename <- paste0("R:/path/independeR_", versions, ".zip") 
    install.packages(filename, 
        repos = NULL, type = "source", 
        lib = gsub("\\\\\\\\networkpath/home/[[:alpha:]]*/", 
           "H:/", .libPaths()[1])) 

모두 H:/R:/ 네트워크 위치입니다 : 내가 로컬 바이너리 패키지를 설치하려고하면 이제 이상한 일이 일어나고있다. .libPaths()에서 기본 위치는 H:/ 위치이지만 전체 네트워크 주소와 함께 표시됩니다. install.packages에 전화해서 이것을 대신했습니다.

위의 코드는 다음과 같은 출력으로, 실패

'\\networkpath\home\JDUB~PN6\DOCU~UZL\R\R-34~TN4.0' is not recognized as an internal or external command, 
operable program or batch file. 
Warning in install.packages : 
    running command '"//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/bin/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip"' had status 1 
Warning in install.packages : 
    installation of package ‘R:/path/independeR_0.1.8.zip’ had non-zero exit status 

여기 나를 놀라게 두 가지가있다. 디렉토리 이름은 모두 뒤죽박죽입니다 (Documents 대신 DOCU~UZL 등). 그러나 어떤 이유로 명령 프롬프트가 제대로 작동합니다.

C:\Users\jdubbeldam>"//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/b 
in/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip" 

'\\networkpath\home\JDUB~PN6\DOCU~UZL\R\R-34~TN4.0' is not recognized as 
an internal or external command, 
operable program or batch file. 

CMD는 경로를 차단하는 것 몇 가지 이유 :

내가 직접 명령 프롬프트에 명령 "//networkpath/home/JDUB~PN6/DOCU~UZL/R/R-34~TN4.0/bin/x64/R" CMD INSTALL -l "H:\Documents\R\R-3.4.0\library" "R:/path/independeR_0.1.8.zip"을 넣어하려고하면 출력이 매우 유사합니다 : 더 재미있는 점은 다음과 같다 명령 중간에. 나는 명령이 너무 길기 때문에 이것이라고 생각한다. 동일한 명령을 시도했지만 H:/Documents/R/R-3.4.0/bin/x64/R을 사용하면 설치가 정상적으로 진행됩니다.

스크립트에서이 패키지를 자동으로 설치할 수 있기를 바랬으므로 R 내에서이 문제에 대한 해결책을 원합니다. R이 더 짧게 사용하도록하는 방법이 있습니까? H:/Documents/R/R-3.4.0/bin/x64/R?

답변

0

나는, 업데이트 패키지에 문제가되었다 : https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17261

는 R 3.4.0에서 시작, file.info 때때로은 mtime에 대해 atime 및 ctime 디렉토리로 반환됩니다. 공유하는 데있어 할 일이있는 것 같습니다. 이것은 update.packages와 같이 file.mtime을 사용하는 함수에 영향을줍니다.

재현 :

임의의 디렉토리로 file.info()를 시도해보십시오. 합법적 인 파일 시간을 반환하는 경우 Windows 탐색기 창을 열고 디렉토리로 이동 한 다음 호출을 다시 실행하면 s가 반환됩니다.

경우에 따라 디렉토리가 열려 있지 않거나 (열려있는 탐색기 윈도우의 경로에 ) 있더라도 s를 반환하지만 일관성이 없습니다.토마스 Kalibera의 코멘트와

:

보고서 주셔서 감사합니다, 이건 내가 찾은

R-의 devel 최근 수정되었습니다 알려진 버그 때 타임 스탬프가 올바르게 작동하고 NA로 표시되지 않은 파일 탐색기 창을 닫았습니다.
코드가 작동하지 않는 이유는 이것이 원인 일 수 있습니다.

+0

이 링크는 질문에 대답 할 수 있지만 답변의 핵심 부분을 여기에 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. –

+0

흠,'install.packages'를 디버깅 할 때 오류 메시지에서 언급 한'mtime'과'ctime'라는 이름을 보았지만, 어떻게해야 할 지 잘 모릅니다. 이 문제를 해결하는 방법에 대한 질문에 직접 대답하는 것은 아니지만 그것이 버그이며 곧 수정되어야 함을 확인합니다. – JAD

0

다음 작업을 할 수있었습니다. 그러나, 나는 그것이 매우 추악하다고 생각하고, 여전히 그것을 할 수 있는지보기를 원할 것입니다. 나는 윈도우 10에서 파일에서 타임 스탬프를 받고 영향을 미치는보고 된 버그가 있음을 발견 검색하는 동안

filename <- paste0("R:/path/independeR_", versions, ".zip") 

cmd <- file.path(gsub("//networkpath/home/[[:alnum:]]*/", "H:/", 
         gsub("//networkpath/home/[[:alnum:]]*~[[:alnum:]]*/", 
         "H:/", R.home())), "bin/x64/R") 

libname <- gsub("\\\\\\\\networkpath/home/[[:alpha:]]*/", 
       "H:/", .libPaths()[1]) 

call <- paste(paste0('"', cmd, '"'), 
       "CMD", 
       "INSTALL", 
       "-l", 
       paste0('"', libname, '"'), 
       "--no-lock", 
       paste0('"', filename, '"'), 
       sep = " ") 

system(call)