2010-05-25 9 views
35

내 회사의 사용자가 패키지를 설치할 수 있도록 로컬 R 패키지 저장소를 만들고 싶습니다. 시스템 관리자는 주기적으로 로컬 저장소를 업데이트 할 수 있습니다. CRAN 미러에 대한 액세스가 현재 거부되었습니다.로컬 R 패키지 저장소 만들기

간단한 방법이 있나요?

감사합니다.

수정 : 사과 드리겠습니다. 가이드는 내가 먼저보아야하는 곳입니다. 고맙습니다.

답변

36

예, 로컬 패키지가 포함 된 CRAN 또는 레포 중 하나를 쉽게 설정할 수 있습니다. ,

  1. 는 웹 서버의 최상위 디렉토리를 만들어 R/
  2. 거기에 일반 계층 구조를 만들기 말 : : 아마도 당신은 그래서 이렇게 Windows 용이 원하는 R/bin/windows/contrib/2.11은. 다른 (이전) 릴리스를 지원해야하는 경우 디렉토리 2.10, 2.9 ...을 2.11 디렉토리 옆에 만들면됩니다.
  3. 놓습니다 디렉토리 (예를 들어, 2.11)에 필요한 패키지는 다음 디렉토리로 변경하고 저장소에 PACKAGESPACKAGES.gz 파일을 생성하려면 다음 명령을 실행하십시오

    tools::write_PACKAGES(".", type="win.binary")

그게 전부입니다. 이제

update.packages(repos="http://my.local.server/R", ask=FALSE) 
과 같은 명령을 사용하여 주소를 가리켜 서 저장소에 액세스 할 수 있습니다.

로컬 패키지를 업데이트하기 위해 R/zzz.R에서 수행합니다.

편집 일부 오 + 년 후은 : 그리고 drat 패키지는 지금의 많은 자동화하고, 당신은 또한 HTTP/HTTPS를 통해 저장소를 제공하기 위해 GitHub를 사용하는 경우 특히 빛나는 (하지만 너무 다른 또는 로컬 호스팅하는 데 유용합니다) .

+0

자동 업데이트는 매우 편리하게 들리지만 업데이트 명령을 어디에 넣어야하는지 이해할 수 없습니다. 나는'zzz.R'과'.onLoad'로 놀았지만'R CMD check ... '를 통과시킬 수는 없습니다. 어떤면에서는 현재로드중인 것을 업데이트하는 것이 약간 이상하게 보입니다. – Backlin

+0

update 명령은 저장소에 연결할 수있는 모든 사용자가 R을 입력 할 수 있습니다. –

+4

Dirk의 의견에 더하여 패키지 사용자가'options (repos = c (getOption ("repos"))와 같은 것을 포함하도록'Rprofile.site' 파일 (모든 R 세션의 시작시 실행 됨) MyCompanyRepo = "http : //my.local.server/R"))'를 사용한다면, 사용자는 경로를 가리킬 필요없이'install.packages ("mypackage")'와 같은 일을 할 수 있습니다. –

2

패키지 miniCRAN도이 기능을 제공합니다. 가장 큰 장점은 전체 미러가 필요하지 않지만 의존성을 포함하여 필요한 패키지 배포만으로 CRAN의 "미니"미러를 설정할 수 있다는 것입니다.