Submit R package to CRAN

몇 가지 Open API를 이용한 데이터 수집 로직을 구현해 봅니다.

유충현 https://choonghyunryu.github.io (한화생명)
2019-03-16

개요

CRAN에 패키지를 submit하는 방법을 간단하게 다룹니다. 또한 CRAN에 패키지를 submit하기 위해서는 R-devel 환경에서도 무결성을 check해야 합니다. 생략할 수도 있지만, 특정 기능이 R development 버전에서 오류가 발생할 수도 있기 때문이다. 반드시 수행해야 합니다.

본 note에서는 Mac OS X 버전의 R 3.5.2 환경에서 개발 버전을 설치하는 방법과 CRAN에 패키지를 submit하는 방법을 개괄적으로 다룹니다.

R version 4.1.2 (2021-11-01)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] ggplot2_3.3.6   htmltools_0.5.2 shiny_1.7.1    

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.8.3        lubridate_1.8.0     lattice_0.20-45    
 [4] assertthat_0.2.1    digest_0.6.29       utf8_1.2.2         
 [7] mime_0.12           R6_2.5.1            evaluate_0.15      
[10] httr_1.4.2          highr_0.9           pillar_1.7.0       
[13] rlang_1.0.2         rstudioapi_0.13     fontawesome_0.2.2  
[16] jquerylib_0.1.4     Matrix_1.4-0        rmarkdown_2.11     
[19] labeling_0.4.2      splines_4.1.2       reactable_0.2.3    
[22] xaringanExtra_0.5.5 stringr_1.4.0       htmlwidgets_1.5.4  
[25] munsell_0.5.0       compiler_4.1.2      httpuv_1.6.5       
[28] xfun_0.30           pkgconfig_2.0.3     mgcv_1.8-39        
[31] downlit_0.4.0       tidyselect_1.1.2    tibble_3.1.7       
[34] bookdown_0.24       XML_3.99-0.9        fansi_1.0.3        
[37] dbplyr_2.2.0        crayon_1.5.1        dplyr_1.0.9        
[40] withr_2.5.0         later_1.3.0         grid_4.1.2         
[43] nlme_3.1-155        jsonlite_1.8.0      xtable_1.8-4       
[46] gtable_0.3.0        lifecycle_1.0.1     DBI_1.1.2          
[49] magrittr_2.0.3      scales_1.2.0        cli_3.3.0          
[52] stringi_1.7.6       cachem_1.0.6        farver_2.1.0       
[55] promises_1.2.0.1    xml2_1.3.3          bslib_0.3.1        
[58] ellipsis_0.3.2      generics_0.1.2      vctrs_0.4.1        
[61] distill_1.3         tools_4.1.2         koscrap_0.1.1.9000 
[64] glue_1.6.2          purrr_0.3.4         fastmap_1.1.0      
[67] yaml_2.3.5          colorspace_2.0-3    memoise_2.0.1      
[70] knitr_1.37          sass_0.4.1         

Building R-devel on Mac OS X를 참고하였습다.

R-devel 환경 만들기

아마 대부분의 R 사용자는 버전 번호는 다르지만, stable 버전의 R을 사용하고 있을 것입니다. 필자도 R을 CRAN에 제출하기 위해서 R development 버전을 설치하였습니다.

Downloading R-devel

다음처럼 https://stat.ethz.ch/R/daily URL에서 최신 R development 버전을 다운로드 합니다.:

Building R-devel

소스 파일의 압축을 풉니다.:

conifg.site 파일의 FC 변수를 다음과 같이 정의합니다.

F77="gfortran -arch x86_64"
FC=$F77

소스 파일을 컴파일 합니다. CRAN에 패키지를 제출할 때 무결성 체크를 위한 목적으로만 사용하기 때문에 Gui 환경의 binary를 생성하지 않을 것입니다. configure 명령을 –without-x 옵션으로 수행하면 됩니다.

Install R-devel

Mac OS X 환경에서 prefix 변수의 값을 지정하지 않으면, 현재 설치된 stable 버전을 엎어칩니다. 그러므로 반드시 설치할 경로를 지정해야 합니다. 필자는 /usr/local/lib/R-devel 경로에 개발 버전을 설치하였습니다.

이상으로 개발 버전을 설치하였다. 그리고 개발 버전은 다음과 같이 실행합니다.:

다음처럼 심볼릭 링크를 생성하면 쉽게 사용할 수 있습니다.:

이제는 콘솔에서 R-devel만 입력하면 R 개발 버전이 실행될 것입니다. 그러므로 다음과 같이 개발 버전 환경에서 패키지를 체크할 수 있습니다.

R-devel CMD check –as-cran 패키지이름.tar.gz

CRAN에 패키지 등록하기

CRAN에 패키지를 등록하기 위해서는 몇 가지의 제약을 준수해야 합니다. 어쩌면 매우 까다로운 작업일 수도 있습니다. 아마 처음 패키지를 등록하는 패키지 개발자는 당황할 수도 있습니다.

build package

다음과 같이 패키지를 build합니다. 여기서는 dlookr 0.3.9 버전을 기준으로 설명합니다.

예제에서 dlookr은 패키지 디렉토리를 의미합니다. R CMD build 명령로 패키지를 생성합니다.

상기 명령이 수행되면 DESCRIPTION 파일에서 패키지의 버전 번호를 가져와 컴파일된 패키지 파일을 생성합니다. 그러므로 dlookr_0.3.9.tar.gz이라는 파일이 생성됩니다.

패키지의 무결성을 진단하기 위해서 다음의 명령을 차례로 입력합니다.:

오랜 시간동안 명령어가 수행됩니다. Error, Warning, Note 등이 발생된다면 원인을 찾아 수정해야 합니다. 그리고 그것들이 발생하지 않아야 CRAN에 제출할 수 있습니다.

submit package

https://cran.r-project.org/submit.html URL에서 패키지를 제출합니다. 이 URL은 그림\(\ref{fig:submit_url}\)처럼 개발자 이름, 이메일 주소 등을 입력하고 패키지 파일을 업로드할 수 있는 컴포넌트로 구성됩니다.

R 패키지 제출 화면

(#fig:done_gtk)R 패키지 제출 화면

정보를 입력하고, 파일을 업로드하면 면 단계 화면을 거치고 기술한 이메일 주소로 Submit 확인 메일이 발송됩니다. 발송된 메일의 URL에서 최종 제출 작업을 수행해야 합니다. 메일의 내용은 그림\(\ref{fig:confirm}\)처럼 URL 링크를 포함하고 있습니다.

R 패키지 제출 확인 메일

Figure 1: R 패키지 제출 확인 메일

패키지가 제출되면 몇 분 간격으로 접수되었다는 메일(그림\(\ref{fig:received}\))과 CRAN 사이트에 제출된 버전이 올라간다는 메일(그림\(\ref{fig:goto_cran}\))이 발송됩니다. 물론 제출된 패키지가 check에서 이상이 없었을 경우입니다.

R 패키지 접수 확인 메일

Figure 2: R 패키지 접수 확인 메일

대부분의 정보는 DESCRIPTION 파일에 기재된 내용의 요약입니다.

R 패키지 등록 확인 메일

(#fig:goto_cran)R 패키지 등록 확인 메일

접수 확인 메일 발송 후 정확히 30분 이후에 CRAN으로 패키지가 등록된다는 메일이 발송됨을 알 수 있습니다.

References

Citation

For attribution, please cite this work as

유충현 (2019, March 16). 애플리케이션 서버 구축을 위한 R 워크샾: Submit R package to CRAN. Retrieved from https://choonghyunryu.github.io/workshop_lecture/submit_package

BibTeX citation

@misc{유충현2019submit,
  author = {유충현, },
  title = {애플리케이션 서버 구축을 위한 R 워크샾: Submit R package to CRAN},
  url = {https://choonghyunryu.github.io/workshop_lecture/submit_package},
  year = {2019}
}