2016년 10월 4일 화요일

Roary와 더불어 배운 것

새로운 프로그램의 이름에는 대개 그런 이름을 붙인 이유가 있다. 가장 흔한 것은 acronym이다. 예를 들어 BLAST는 Basic Local Alignment Search Tool에서 각 단어의 앞글자를 딴 것이다. 요즘 내가 감염균의 pan genome 분석을 하면서 아주 많이 빚을 지고 있는 Roary: rapid large-scale prokaryote pan genome analysis(웹사이트)는 어떻게 해서 이런 이름을 갖게 되었을까? 논문이나 웹사이트에는 별다른 설명이 없다. 구글에서 Roary를 치면 가장 위에 나오는 것은 Roary The Racing Car라는 영국에서 제작된 어린이용 애니메이션이 나온다. 실행 속도가 빠르다는 의미에서 재미로 이런 이름을 프로그램에 붙인 것이 아닐까 추축해 본다. 등장 차량(등장 인물?) 중에서 Roary는 영국을 대표한다. Roary 프로그램은 Sanger Institute에서 개발한 것이니 더욱 그럴만도 하겠다.

위키피디아에서 가져온 그림.
올해 중반까지 내가 몰두하고 있었던 것은 (meta)genome 분석용 소프트웨어인 MetAMOS였다. 가장 핵심적인 개발 환경(GCC)와 파이썬 버전이 모두 낮은 CentOS 6.7에서 설치를 하려니 보통 고역이 아니었다. 그러다가 Roary를 알게 되면서 필연적으로 거쳐가야하는 Linuxbrew가 내 리눅스 활용 역사를 발칵 뒤집어 놓았다 해도 과언이 아니다.

만약 내가 CentOS 7.x이나 우분투 16.04를 선택했다면 이 모든 수고가 필요없는 일이 되었을까? 그건 잘 모르겠지만, 아직은 사용자 지원이 이루어지고 있는 리눅스 배포판에 집착하는 것이 더 많은 도전과 공부 기회를 제공하는 것이 분명한 사실이다. 사실 어제 아침(개천절 아침; 출근하여 일을 했다는 이야기)까지는 사용 중인 20 core짜리 리눅스 머신을 우분투로 바꾸는 것을 심각하게 고민하고 있었다. 그러나 한번만 더 삽질을 하자는 신념으로 Roary 재설치 및 실행에 성공하였다. Linuxbrew가 매력적인 이유는 사용자 계정을 하나 더 만들면 아예 처음부터 새로운 환경에서 테스트를 할 수 있다는 것이다. 다만 한가지 주의할 것은 시스템 환경이 복잡해진다는 것. 펄 모듈만 하더라도 시스템 라이브러리 공간에 설치한 것과 사용자 공간에 설치한 것이 뒤죽박죽이 된 상태에서 Linuxbrew까지 한 식구로 들어오게 되어 기억과 기록을 잘 더듬어야 한다는 것이다. R 패키지를 하나 내려받아서 설치하는 일만 예를 들어도 선택 가능한 GCC가 이제는 세 가지나 된다. CentOS 6.x에 원래 있는 것(4.4.7), devtoolset으로 설치한 것, 그리고 linuxbrew가 제공하는 5.3.0까지 있으니 말이다.

Perl의 환경은 어떻게 되는 것일까

brew install perl로 5.10 버전이던 Perl을 업그레이드하면, 설치 맨 마지막 단계에 다음과 같은 메시지가 나온다.
By default non-brewed cpan modules are installed to the Cellar. If you wishfor your modules to persist across updates we recommend using `local::lib`.
You can set that up like this:PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::libecho 'eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"' >> ~/.bash_profile
local::lib은 사용자 홈 디렉토리 하의 공간에 펄 모듈을 설치하고 쓰게 해 주는 것으로 알고있다. 그러면 예전에 관리자 권한으로 설치한 모듈들은 계속해서 사용할 수 있는 것인지? 이제는 펄 인터프리터 바이너리가 ~/.linuxbrew/bin/perl라는 이름으로 존재하는데, 앞으로 만들어질 펄 스크립트 첫줄에는 뭐라고 써야 되는지? 아마도 #!/usr/bin/env perl라고 적는 것이 맞을 것이다. 그러나 여전히 궁금한 것 투성이이다. bp_genbank2gff3.pl를 실행하면 펄 모듈들을 전혀 찾지 못하는 것으로 보아서 Linuxbrew에서 펄을 설치하면 일단은 새로 시작하는 것으로 생각해야 될 것 같다. 펄 자체의 버전이 달라진 상태이니 모듈도 새로 설치하는 것이 맞겠다. 어쩌면 linuxbrew를 이용한 펄 업그레이드는 매우 신중하게 해야 될지도 모르겠다.

댓글 없음: