오픈소스들의 특징은 개발 주기가 빨라 업데이트 및 배포가 잦은 편이다. R과 R에서 동작하는 패키지들 역시 마찬가지이다. 이렇게 자주 업그레이드되는 R, R package 들은 우리에게 많은 유용함을 제공해주고 있다. 빠르게 변화하는 환경은 우리에게 유용함을 제공해 줄수도 있지만 반대로 빈번한 업데이트로 생기는 예상치 못한 외적 이슈들이 생겨 피곤할 수도 있는 부분이다. 사람마다 다른 부분이겠지만 일반적인 사용자라면 항상 최신버전을 사용해 유용함을 소비하고 싶을 경우도 있고, 중요한 프로젝트에 실사용을 검토하는 신중한 사용자인 경우 업데이트에 민감해 이전버전과 넘나들며 최신버전을 검증한 후 적합한 버전을 현업에 사용할 수도 있겠다.
가장 기본적으로 겪었던 이슈는 어떻게 최신버전을 인지하고 이후 업데이트를해야 할지 이다.
R package 의 경우
R Package 의 업데이트는 간편한 편이다. 여기서 필자가 말하는 R Package 업데이트란, 이미 설치된 패키지 라이브러리에 대해서 CRAN 에 등록된 가장 최신 버전의 패키지를 찾아내어 업그레이드하는 것을 말한다.
update.packages()
이 코드를 실행시키면 어떤 미러사이트를 통해 다운로드 할 것인지 묻는다. 적당한 것을 선택한 이후엔 업그레이드가 될 패키지의 구버전 및 설치될 신버전에 대한 정보를 확인시켜주는 로그와 함께 정말로 각각의 패키지들에 대해 업데이트를 진행할 것인지 Yes or No 를 되묻는다.
위의 그림은 update.packages()
를 실행시키고 패키지
설치의 여부를 묻는 질의에 일일이 y
답하여 설치를 진행한
경우이다.
만약 각각의 업그레이드할 패키지에 대해 y, y, y, y, … 를 입력하고 싶지 않은 경우는
update.packages(ask = F)
를 실행하면 되묻지 않고 일괄 업그레이드한다.
R studio 를 사용한다면 노란색 음영으로 표시한 Update 버튼을 누르는 것으로 해결된다.
R 본체의 경우
R package 가 아닌 R 자체를 업그레이드하고 싶은 경우이다. 이는 운영체계별로 상이한데 본 포스팅 글은 Windows 기준으로 설명한다.
R의 업그레이드는 어떻게 되는가? 사실 업그레이드라기 보단 새로 출시된 버전을 추가로 설치하게 된다. 3.2.3 Version 으로 업그레이드를 원하고 이보다 낮은 버전의 3.2.2 Version 이 설치되어 있는 상황을 가정해 보겠다.
R 홈페이지를 통해 3.2.3 Version 설치파일을 다운로드하고 실행해 설치하면 (윈도우에선 특히) 기존 버전을 의식하지 않은 채 3.2.3 Version 을 추가로 설치하게 된다. 따라서 기존 3.2.2 Version 은 지워지지 않는다. 이렇게 기존 버전에서 패치되는 개념이 아닌 독립적 설치이다. 만약에 최신버전 사용에 문제가 발생하여 이전버전의 R 환경이 필요하다면 지워지지 않았기 때문에 이전버전의 R을 그대로 사용하면 된다.
새로운 버전이 출시된다면 그 새로운 버전을 추가로 깔고 사용하심으로써 업그레이드 과정은 사실상 끝났다고 볼 수 있다.1
새 버전이 출시 될 때마다 홈페이지를 들락날락해야 될까?
비교적 자주 새로운 버전을 출시하는데 그럴 때 마다 R 홈페이지로 들어가
새로운 버전을 다운로드하는 과정은 솔직히 번거로울것이다😶
이 번거로움을 피하고 싶다면 installr 패키지의 updateR()
함수가 괜찮은 방법이다. 해당 함수를 이용하면 커멘드 창에서 비교적 쉽게
새 버전을 다운로드할 수 있다.
그림의 번거로운 과정을 아래 코드의 실행으로 대체 할 수 있다는 것이다.
updateR()
실행시 자신의 R 구버전 및 최신버전이 무엇인지 팝업창이 뜨고, 다운로드 및 설치 진행 여부를 묻는 팝업창이 뜬다. 일반적으로 모두 Yes 를 눌러 진행하게 되면 간편히 최신버전을 이용할 수 있다. 다음 주제로도 언급 드리겠지만 이전버전에 사용되던 패키지를 그대로 copy 하겠느냐는 팝업창도 뜨는데, 필요하다면 역시 Yes 버튼을 눌러 진행하는 것을 추천한다.
R 새 버전을 설치하면 항상 잘 사용 하던 패키지들이 사라져 불편해!
사실 installr 패키지는 R의 업데이트 및 설치의 편리 보다도 더 중요한
이점이 하나 더 있다.
updateR()
함수를 사용하지 않고 수동적으로 설치하게 되면
이전에 설치한 패키지들이 연동되지 않는 불편을 겪게 될 것인데
installr 패키지는 이러한 불편함도 염두 해 신버전을 설치할 때 기존
사용하던 패키지의 복사 여부를 묻고 사용자가 Yes 로 승인하면 기존 사용
패키지를 복사하여 신버전 디렉토리에 저장시킨다. “R 새 버전을
설치하면 항상 잘 사용 하던 패키지들이 사라져서(?) 불편해요!” 의
문제를 해결할 수 있게 된다.
참고로 패키지 리소스의 디렉토리가
Program Files/R-X.X.X/library
가 아닌 다른 디렉토리에
별도로 운영하고 있다면, 굳이 위에처럼 패키지를 중복해서 복사할 필요는 또
없다. R 최신버전을 설치한 후 package library 디렉토리의 path 를 별도로
운영하는 위치로 지정하면 되며, 이를 통해 패키지로 인한 중복설치를 예방해
볼 수도 있다. 허나 기본적인 패키지 설치 규칙에 벗어나는 방법인 만큼 추후
관리포인트가 생기기 마련이며 일반사용자분들께는 추천하고 싶지 않다.
자세한 것은 .libPaths()
함수와 해당함수의 도움말 문서를
참고 바란다.
installr package 의 다른 기능들
installr 패키지의 전체 기능은 https://github.com/talgalili/installr/ 에 자세하게
나와있지만 updateR()
함수보단 installr()
이
포괄적이고 더 일반화된 함수다. R 뿐만 아니라 Rstudio, Pandoc, Rtools
등등 R을 사용하다 필요하면 설치가 필요한 플러그인들이 종종 생길 것인데,
이들을 손쉽게 설치할 수 있도록 아래와 같은 팝업창이 뜨게 됩니다.
installr()
저기서 “R(updateR)” 을 누르게 된다면 updateR()
함수를
실행시킨 것과 동일하다. Rstudio 가 눈에 띄어 실행해 보았는데, 역시 기존
구버전이 무엇이고 설치될 신버전이 무엇인지에 대한 팝업창이 뜨며
진행여부를 Yes 를 누르게 되면 최신설치파일을 다운로드하고 실행하여
설치를 도와준다.
이 글은 R-bloggers 의 Updating R (on Windows) through a menu-bar: installr 0.9 released on CRAN의 글을 보고 작성하게 되었다.
이전버전의 삭제는 해도 되고 안 해도 되고 원하는 대로 하면 된다. R 자체의 용량은 매우 적기 때문에(패키지 파일을 제외하면 100Mb 정도) 굳이 삭제할 필요성을 느끼지 못하기도 하고, 본문에서도 이야기했듯이 이전버전이 때에 따라 필요한 경우가 있다. 따라서 그대로 놔두는 편이다↩︎