서버의 운영체제를 CenOS 6.9에서 7.4로 업그레이드하면서 여러 응용프로램을 효율적으로 관리할 방안을 고민하게 되었고, 이에 따라서 자연스럽게 conda를 공부하게 되었다. 앞으로는 Linuxbrew에서 조금씩 멀어지게 될 것만 같다. 전혀 관리자 역할을 할 수 없는 서버를 접속하여 사용한다면 Linuxbrew도 좋은 대안이다.
Conda: Package, dependency and environment management for any language—Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C++, FORTRAN
Anaconda: open source distribution of the Python and R programming languages
Bioconda: a channel for the conda package manager specializing in bioinformatics software
Conda는 나머지 두 개의 기반이 되는 관리 시스템이기도 하다. 일단 관리자 권한으로 /opt/anaconda3에 설치를 하였다. 일반 사용자 모드에서 설치 스크립트(Anaconda3-5.1.0-Linux-x86_64.sh)를 실행한다면 ~/anaconda3가 기본 설치 위치가 된다.
Conda에서 환경(environment; Managing environments)의 개념을 잡는 것이 조금 어렵다. Python의 virtualenv와 유사한 것이라고 생각하면 된다. 즉 사용자가 지정한 python version과 패키지가 적용되는 환경을 생성하여 activate 명령으로 이에 진입하여 사용하면 되는 것이다. 현재 설치된 환경은 무엇이 있는가?
$ conda info --envs
# conda environments:
#
root * /opt/anaconda3
'root' 하나만 존재한다. 설치 매뉴얼에 있는 그대로 따라서 Bioconda 설치까지 마쳤더니 python package는 176개, /opt/anaconda3/bin에는 무려 873개의 바이너리가 깔렸다. 설치된 모든 패키지의 목록을 보고 싶으면 conda list --explicit라고 하면 된다. Bioconda를 통해서 깔린 패키지도 전부 보임은 당연하다.
아직까지는 나만의 conda environment를 따로 생성할 필요를 느끼지 못한다. root의 것을 그대로 쓰면 된다. Python 2.7.5가 필요하다면 /opt/anaconda3/bin이 $PATH에 속하지 않게만 만들면 되는 것이다. 만약 conda 환경 안에서 python 2.7을 사용하려면 다음과 같이 실행하여 py27이라는 이름의 새로운 환경을 하나 만든 뒤 activate를 하면 된다(Managing python)
$ conda create -n py27 python=2.7 anaconda
설치된 환경을 점검해 보자. 친절하게도 홈 디렉토리 아래에 python 2.7과 관련한 것들을 설치할 공간을 마련하였다. 개별 패키지를 설치하려면 나의 설정 상태에서는 관리자 권한일 필요하지만, 'environment'를 새로 만들 때에는 홈 디렉토리를 이용하므로 일반 사용자 권한으로도 가능하다.
$ conda info --envs
# conda environments:
#
py27 /home/hyjeong/.conda/envs/py27
root * /opt/anaconda3
채널이란 무엇인가? Conda가 패키지를 찾기 위해 살펴보는 path라고 한다. 이 글의 시작 부분에서 소개했듯이 Bioconda는 일종의 채널이다. Bioconda를 통해서 생명정보용 응용프로그램을 설치할 때를 제외하면 채널을 매만질 일이 없으니 당장은 더 알아볼 필요는 없다.
이렇게 능률적으로 프로그램 관리를 할 새로운 방안을 익히게 되어 다행스럽게 생각한다.
댓글 없음:
댓글 쓰기