2017-11-22 30 views
0

gntub의 C 라이브러리에 특정 종속성이있는 R 패키지가 있으며, 현재 repo 내부의 종속성 C 라이브러리가 없습니다.다운로드시 R 패키지에 대한 외부 종속성을 설치할 수 있습니까?

일반적으로, 나는 다음과 GitHub의에서 R 패키지를 설치합니다 :

install.packages("devtools") 
library(devtools) 
install_github("github_repo/package_name") 

는 R 패키지가 사용하는 C 코드의 모든 자연스럽게 하위 폴더 package_name/src 내부에 있습니다. 그러나 R 패키지가 작동하는 데 필요한 C 라이브러리 종속성을 해제하는 방법이 혼란 스럽습니다. "쓰기 R 확장"의 문서를 바탕으로

, https://cran.r-project.org/doc/manuals/r-release/R-exts.htmlk는, 이러한 종속성은 나열되어야합니다 :

"는 R 시스템 외부 종속성은 아마도 별도의 README에서 증폭의 'SystemRequirements'필드에 나열되어야합니다 파일."

그건 의미가 있습니다. 그리고이 C 라이브러리 의존성을 설치하는 방법을 README에 넣을 수도 있고 github repo에 라이브러리를 넣을 수도 있습니다 (너무 크지 않은 경우).

RUN apt-get update && apt-get install -y \ 
    make \ 
    clang \ 
    require_c_library1 \ 
    require_c_library2 \ 
    require_c_library3 

그것이 가능이 C 라이브러리를로드 :

그러나이 쉽게 Dockerfile 내에서, 즉 내가 도커 파일을 좋아하는 이유는 사람들이 다운로드 할 수있는 엉망, 될 수있는, 나는 다음을 추가합니다 (예 : R CMD INSTALLR CMD SHLIB을 호출하여 모든 C 코드와 C 의존성을 Makevars에 설치합니다)?

또는 (1) R 패키지의 모든 C 종속성을 다운로드하여 컴파일하고 devtools::install_github("github_repo/package_name")에 컴파일하거나 (2) 사용자에게 README에 이러한 종속성을 모두 설치하도록 요청하는 유일한 옵션입니다. 올바르게 (그리고 끝없이 이메일을 보내지 않습니까?)

내가 여기 이해 아니에요 뭔가가있을 수 있습니다, 그래서 나에게

답변

1

TL을 수정하시기 바랍니다; 닥터 : 나는 기원합니다!

이전에 관련된 질문이있었습니다. 본질적으로 잘 정의 된 우주에서 작동하는 (잘 연마 된) CRAN 의존성을 호스트 운영 체제 전반에 보편적으로 적용하고자합니다. 너무 많고 많은 변형이 있습니다.

XML, PostgreSQL, PNG 또는 JPEG의 예를 들어보십시오. 그들의 이름 (및 버전)은 운영 체제에 따라 다를 수 있으므로 슬프게도이 이름은 정말 어렵습니다.

[내가 R에서 apt의 캐시를 쿼리 할 수있게 해주는 패키지 RcppAPT가 있지만 '다른 방법'으로 만 흐름을 주소 지정합니다. 물론 사용자의 하위 집합에 대해서만 주소는 없으므로 Windows, MacOS, RH/CentOS 등에서 사람들에게 익숙하다. ]

+0

Darn. README에 업데이트 된 URL을 넣을 것입니다. – ShanZhengYang