라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기

라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기

전에 국가기관에 다니는 분이 이와 비슷한 질문을 하신 분이 있었고, 나도 역시 외부 프로젝트 나갈때를 대비해 이런 준비를 할 필요성을 느꼈는데, 이제야 좀 감이 잡혀서 글을 써본다.

문제는 이거다.

외부 네트웍이 전혀 안되는 곳에서 R 패키지 설치하기가 매우 번거롭다.

내 경우엔 필요한 모든 패키지를 USB로 다운 받아가서 사용했으나, 패키지 의존성이 복잡한 놈이라면 정말 난감할 정도로 귀찮은 작업이 되고 만다.
이럴때마다 가지고 다닐 수 있는 미러링 서버가 있으면 좋겠다고 생각했는데, 오늘 라즈베리 파이의 아류작인 큐비보드를 가지고 놀면서 이걸 사용하면 되겠다는 생각이 들었다.

  1. 일단 라즈베리 파이에 리눅스 서버와 웹서버를 가벼운걸로 설치한다.
  2. 파이에 USB 32GB 정도 되는 걸로 꽂아서 마운트 시키고 웹서버 홈으로 설정한다.
  3. R CRAN Mirror Howto의 설정대로 cron잡과 rsync 스크립트를 설정한다. 만일 리눅스 기반으로만 패키지 cran 미러를 구성하고자 한다면 rsync -rtlzv --delete --exclude='bin/*' cran.r-project.org::CRAN /mnt/usbdrive/와 같이 설정하면 되는데, 한 70GB 이상의 USB 메모리가 있다면 모두 싱크해도 큰 문제는 없을것인데, rsync의 옵션을 가지고 필요없는 플랫폼의 패키지를 빼버리는게 나을것이다.
  4. 주기적으로 USB 메모리에 싱크하는 cron잡을 적절하게 설정하고 그냥 둔다.(약 1주일에 한번정도…)

만일 외부에 R 관련 설치 작업을 하러 나간다고 하면, 내부 네트웍이라도 자유롭게 설정 가능한 곳이라면 라즈베리 파이를 가지고 나가도 되고 만일 그렇지 않다고 한다면 USB만 뽑아서 가져간다.

작업 서버의 .Rprofile에 options(repos = c(getOption("repos"), MyRepo= "http://192.168.X.X/R"))과 같이 적절하게 설정해서 가져간 리소스를 패키지 설치시 사용할 수 있게 설정해주면 그냥 install.packages("mypkg")와 같이 실행하면 라즈베리 파이의 cran 미러링 리소스를 사용할 수 있을 것이다.

아마도 자주 외부 프로젝트를 나가시는 분이 있으시다면 라즈베리 파이를 사용해 상시 준비하시는 것도 좋은 생각일 듯 하다.

CC BY-NC 4.0 라즈베리 파이로 R cran 로컬 미러 만들어서 사용하기 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.