Development/R

R 리눅스(UBUNTU18.04) 에서 여러버전 설치

Dev. Jkun 2022. 10. 18. 12:47
반응형

R 여러 버전들을 (Ex. 3.x / 4.x) 을 설치하기 위해서는 초반 설정이 중요했던 것 같다. 정확은 아니지만 개인적으로 기존에 설치된 r-base 를 지우고 진행하는게 나을 것이란 생각이 들었다. 아마 기존에 이미 해보셨거나, 따라하시다보면 그게 깔끔하단 생각을 하게 될것이라 생각한다.

사전 작업 (R 프로세스를 종료시키고 R 과 패키지를 삭제한다)

# R-Studio Server Process Kill
# R Base Remove
# R Cran Package Remove

sudo /usr/sbin/rstudio-server stop
ps -ef | grep rstudio-server
#kill or pkill 을 통하여 프로세를 중지

# R Base Remove
# 설치된 R 패키지를 확인하세요
sudo apt list --installed | grep ^r-base
sudo apt remove ^r-cran
sudo apt remove ^r-base
sudo apt remove r-doc-html

sudo apt list --installed | grep rstudio
sudo apt remove rstudio-server
sudo userdel rstudio-server
sudo rm -rf ~/.rstudio

이제부터 R 을 설치할 것이다. 먼저 R 의 버전부터 확인하자. 그럼 설치하고자 하는 버전을 확인할 수 있을 것이다.
그럼 버전을 확인했으면 환경변수에 현재 설치를 진행하는 R 버전을 지정해준다. 그리고 해당 버전의 deb 패키지를 다운로드 받는다.

export R_VERSION=4.1.3
wget https://cdn.rstudio.com/r/ubuntu-1804/pkgs/r-${R_VERSION}_1_amd64.deb

 

자 이제 패키지를 설치하기 전에 확인하고 넘어가자.

이 부분은 개인적으로 매우 고생했기에 꼭 짚어야 할 것같다. 적지않은 시간 소모;;
우분투는 파이썬(python) 의 영향을 굉장히 많이 받는다. 일단 크리티컬하게 apt-get 부터가 gdei, certbot 등 하.. 일단 나열조차 머리아프다;

그리고 파이썬을 다수 버전을 사용하는 중의 상황이기 때문에도 더더욱 고생한다. 혹시나 다수의 파이썬을 사용해야하는 경우라면 확인해보기를 권장드린다. 그리고 현재까지 이거저거 설치하는 도중 certbot 까지 포함;; Python 3.6 이 안정적이었다. 하지만 3.7+ 이상으로 개발된 패키지를 사용해야하는 경우가 있는데.. 일단 정신건강상 파이썬은 복수버전 및 버전설정을 해놓고 가는게 안전하다.

 

파이썬(Python) 버전 설정

우분투에서나 타 환경에서도 파이썬 버전이 여러개가 설치되어 있을 수 있다. 하지만 특정 패키지나 모듈을 설치해서 실행하고자 할때는 파이썬 버전에 의존성이 걸려있는 경우를 볼 수 있다.

www.jkun.net

일단 위처럼 버전설정이 가능하고 이 R 의 설치는 파이썬의 3.6 버전으로 진행하기로. 3.10 으로 하면 gdebi 에서 고생할 것이며... 암튼! 고생합니다잉~

이제 다운로드 받은 패키지(deb)를 설치하자.

sudo apt-get install gdebi-core ## Python 3.6
sudo gdebi r-${R_VERSION}_1_amd64.deb

# 설치여부 확인
/opt/R/${R_VERSION}/bin/R --version

R 4.1.3
R 3.6.3 (R_VERSION 환경변수 값을 3.6.3 으로 변경 후)

이렇게 버전 확인을 하면 된 것이다.

자 이제 준비가 끝났으면 이제 심볼릭 링크만 걸어주면 끝이다. 

sudo ln -s /opt/R/${R_VERSION}/bin/R /usr/local/bin/R 
sudo ln -s /opt/R/${R_VERSION}/bin/Rscript /usr/local/bin/Rscript

저는 서버에서 R Studio Server 를 사용하지는 않습니다. 오로지 서버에서 R 만 사용하고 R Base 를 사용하지 않는 목표하에 작성된 포스트 입니다. 다수의 R 버전을 사용하는데 Base 는 심볼릭으로 해결하는게 더 심플할거란 생각입니다.

마지막으로 현재 우분투에서 R 버전 스위칭하는 스크립트를 작성하여 사용중입니다. 이미 많이들 만들어서 사용중이실것 같아 따로 올리지는 않습니다. 혹시 R 버전 스위칭 스크립트(r-ver-switch.sh)가 필요하신 분은 댓글을 남겨주세요. ^^

 

 

반응형