miniCRAN으로 전체 package들을 다운 받은 경우에도, 일부 package만 긴급하게 다운받아야 하는 경우도 발생한다.  전체 package의 다운로드는 수시간이 필요하므로 건별로 추가하는 방법에 대해서 알아보자.  

 

 


사전 조건

    일부 package를 추가 다운로드 하는 경우에도 전체 package 파일이 있는 디렉토리를 target으로 해야만 한다.  파일을 다운 받은 후에 다운받은 파일에 대해서 보안검사 후에 전체 파일에 대해서 Indexing을 다시하게 된다. 그 결과 PACKAGE, PACKAGE.gz, PACKAGE.rds 파일들에 전체 package정보를 다시 생성하는 데, 이 파일이 반영이 되지 않으면 설치된 내용을 인식하지 못하게되며, 별도의 디렉토리에 설치를 하게 되면 별도의 디렉토리에 설치된 내용만으로 PACKAGE 파일들이 생성되기 때문에 나머지 전체 package 파일을 찾을 수 없게 된다.

 

 


일부 Package 다운로드 하기

 

R 프로그램을 실행한다. 

$ R

 

miniCRAN package를 loading한다.

> library(miniCRAN) 

 

다시 다운받을 package 목록을 comma로 구분하여 나열한다. (아래는 akima package만 다운받는 경우)

> pkgs <- c("akima") 

 

만약, 다운받을 package와 연관된 package도 모두 다운로드 받으려면 pkgDep( )를 호출하여 연관 목록을 포함한 package 목록을 얻는다. 접속할 CRAN mirror 서버를 선택한다.

> pkgList <- pkgDep(pkgs, type = "source", suggests = FALSE, availPkgs = available.packages()) 

--- Please select a CRAN mirror for use in this session --- 
Secure CRAN mirrors 
1: 0-Cloud [https]                   2: Algeria [https] 
3: Australia (Canberra) [https]      4: Australia (Melbourne 1) [https] 
5: Australia (Melbourne 2) [https]   6: Australia (Perth) [https] 
7: Austria [https]                   8: Belgium (Ghent) [https] 
9: Brazil (PR) [https]               10: Brazil (RJ) [https] 
11: Brazil (SP 1) [https]            12: Brazil (SP 2) [https] 
13: Bulgaria [https]                 14: Chile [https] 
15: China (Hong Kong) [https]        16: China (Lanzhou) [https] 
17: China (Shanghai) [https]         18: Colombia (Cali) [https] 
19: Czech Republic [https]           20: Denmark [https] 
21: Ecuador (Cuenca) [https]         22: Ecuador (Quito) [https] 
23: Estonia [https]                  24: France (Lyon 1) [https] 
25: France (Lyon 2) [https]          26: France (Marseille) [https] 
27: France (Montpellier) [https]     28: Germany (Erlangen) [https] 
29: Germany (Göttingen) [https]      30: Germany (Münster) [https] 
31: Germany (Regensburg) [https]     32: Greece [https] 
33: Hungary [https]                  34: Iceland [https] 
35: Indonesia (Jakarta) [https]      36: Italy (Padua) [https] 
37: Japan (Tokyo) [https]            38: Japan (Yonezawa) [https] 
39: Korea (Busan) [https]            40: Korea (Gyeongsan-si) [https] 
41: Korea (Seoul 1) [https]          42: Korea (Ulsan) [https] 
43: Malaysia [https]                 44: Mexico (Mexico City) [https] 
45: Morocco [https]                  46: Norway [https] 
47: Philippines [https]              48: Serbia [https] 
49: Spain (Madrid) [https]           50: Sweden [https] 
51: Switzerland [https]              52: Turkey (Denizli) [https] 
53: Turkey (Mersin) [https]          54: UK (Bristol) [https] 
55: UK (London 1) [https]            56: USA (CA 1) [https] 
57: USA (IA) [https]                 58: USA (KS) [https] 
59: USA (MI 1) [https]               60: USA (MI 2) [https] 
61: USA (OR) [https]                 62: USA (TN) [https] 
63: USA (TX 1) [https]               64: Uruguay [https] 
65: (other mirrors)


Selection: 41 

> _

 

연관된 목록을 포함한 package 목록(pkgList)을 다운 받는다.

> makeRepo(pkgList, path = "$WEB_HOME", type = "source")        # LINUX의 경우
> makeRepo(pkgList, path = "$WEB_HOME", type = "win.binary")    # Windows의 경우


------ <중략>

trying URL 'https://cran.seoul.go.kr/src/contrib/akima_0.6-2.tar.gz' 
Content type 'application/x-gzip' length 154384 bytes (150 KB) 
================================================== 
downloaded 150 KB 

trying URL 'https://cran.seoul.go.kr/src/contrib/sp_1.3-1.tar.gz' 
Content type 'application/x-gzip' length 1133621 bytes (1.1 MB) 
================================================== 
downloaded 1.1 MB 

trying URL 'https://cran.seoul.go.kr/src/contrib/lattice_0.20-38.tar.gz' 
Content type 'application/x-gzip' length 359031 bytes (350 KB) 
================================================== 
downloaded 350 KB 
  
------ <중략>

[1] "/home/ia01332/packages/src/contrib/akima_0.6-2.tar.gz" 
[2] "/home/ia01332/packages/src/contrib/sp_1.3-1.tar.gz" 
[3] "/home/ia01332/packages/src/contrib/lattice_0.20-38.tar.gz" 
------ <중략>

 

다운로드 받은 package에 대해 변조 여부 등을 확인하고, 다운로드된 파일뿐만 아니라 전체 package 파일을 체크한 후에 PACKAGE, PACKAGE.gz, PACKAGE.rds 파일을 갱신한다.

 

 


주의사항

    Package를 사내에서 배포하기 위한 서버와  miniCRAN으로 package를 다운받는 서버가 다른 경우에는 배포 서버에 있는 모든 파일을 package 다운로드 서버에도 복사되어 있어야 한다. 또한 다운로드 작업이 완료된 후에는 모든 파일을 압축해서 배포서버로 옮겨서 압축을 풀거나, 시간 역순으로 sorting하여 이번에 다운 받은 파일과 PACKAGE / PACKAGE.gz / PACKAGE.rds 파일만 복사해도 된다. (download가 끝나면 항상 PACKAGE관련 파일을 항상 새로 생성하기 때문에 다운받기 시작한 시간 이후에 생성된 파일만 복사하면 된다.

 

 

 


see also: miniCRAN를 활용한 R Local Repository 구성

 

 

 

블로그 이미지

사용자 자연&사람

행복한 개발자 programmer since 1995.

댓글을 달아 주세요