라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기
전에 국가기관에 다니는 분이 이와 비슷한 질문을 하신 분이 있었고, 나도 역시 외부 프로젝트 나갈때를 대비해 이런 준비를 할 필요성을 느꼈는데, 이제야 좀 감이 잡혀서 글을 써본다.
문제는 이거다.
외부 네트웍이 전혀 안되는 곳에서 R 패키지 설치하기가 매우 번거롭다.
내 경우엔 필요한 모든 패키지를 USB로 다운 받아가서 사용했으나, 패키지 의존성이 복잡한 놈이라면 정말 난감할 정도로 귀찮은 작업이 되고 만다.
이럴때마다 가지고 다닐 수 있는 미러링 서버가 있으면 좋겠다고 생각했는데, 오늘 라즈베리 파이의 아류작인 큐비보드를 가지고 놀면서 이걸 사용하면 되겠다는 생각이 들었다.
- 일단 라즈베리 파이에 리눅스 서버와 웹서버를 가벼운걸로 설치한다.
- 파이에 USB 32GB 정도 되는 걸로 꽂아서 마운트 시키고 웹서버 홈으로 설정한다.
- R CRAN Mirror Howto의 설정대로 cron잡과 rsync 스크립트를 설정한다. 만일 리눅스 기반으로만 패키지 cran 미러를 구성하고자 한다면
rsync -rtlzv --delete --exclude='bin/*' cran.r-project.org::CRAN /mnt/usbdrive/
와 같이 설정하면 되는데, 한 70GB 이상의 USB 메모리가 있다면 모두 싱크해도 큰 문제는 없을것인데, rsync의 옵션을 가지고 필요없는 플랫폼의 패키지를 빼버리는게 나을것이다. - 주기적으로 USB 메모리에 싱크하는 cron잡을 적절하게 설정하고 그냥 둔다.(약 1주일에 한번정도…)
만일 외부에 R 관련 설치 작업을 하러 나간다고 하면, 내부 네트웍이라도 자유롭게 설정 가능한 곳이라면 라즈베리 파이를 가지고 나가도 되고 만일 그렇지 않다고 한다면 USB만 뽑아서 가져간다.
작업 서버의 .Rprofile에 options(repos = c(getOption("repos"), MyRepo= "http://192.168.X.X/R"))
과 같이 적절하게 설정해서 가져간 리소스를 패키지 설치시 사용할 수 있게 설정해주면 그냥 install.packages("mypkg")
와 같이 실행하면 라즈베리 파이의 cran 미러링 리소스를 사용할 수 있을 것이다.
아마도 자주 외부 프로젝트를 나가시는 분이 있으시다면 라즈베리 파이를 사용해 상시 준비하시는 것도 좋은 생각일 듯 하다.
라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.