2018년 3월 26일 월요일

Conda, Anaconda, Bioconda 기초

서버의 운영체제를 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를 통해서 생명정보용 응용프로그램을 설치할 때를 제외하면 채널을 매만질 일이 없으니 당장은 더 알아볼 필요는 없다. 

이렇게 능률적으로 프로그램 관리를 할 새로운 방안을 익히게 되어 다행스럽게 생각한다.

댓글 없음: