2016년 8월 30일 화요일

천국과 지옥을 오가게 했던 Scalar-List-Utils

문제의 발단이 된 오전 포스팅: Genomics 시대에 phylogenetic tree 그리기

윗 글의 마지막 부분에 소개한 Roary를 CentOS 6.8에 설치하는데 문제가 있어서 사무용 컴퓨터(윈도우 7)에 VirtualBox로 우분투 16.04를 설치하고 여기에 Roary를 깔아서 sample data를 성공적으로 분석하였다. 'fast and dirty' FastTree는 메모리 부족으로 돌아가지를 않아서 CentOS 쪽으로 core gene alignment를 보내서 계통수를 그린 후 다시 우분투쪽으로 보내서 그림을 마무리하였다.


CentOS 쪽 서버에서 linuxbrew와 perlbrew를 만지작거리다보니 Perl 작동이 뭔가 심상치않음을 느꼈다.


$ perldoc Bio::Seq
Can't load '/usr/lib64/perl5/auto/List/Util/Util.so' for module List::Util: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/lib64/perl5/auto/List/Util/Util.so) at /usr/lib64/perl5/XSLoader.pm line 70.
 at /usr/lib64/perl5/List/Util.pm line 23.
Compilation failed in require at /usr/lib64/perl5/Scalar/Util.pm line 23.
Compilation failed in require at /usr/local/share/perl5/File/Temp.pm line 18.
BEGIN failed--compilation aborted at /usr/local/share/perl5/File/Temp.pm line 18.
Compilation failed in require at /usr/share/perl5/Pod/Perldoc.pm line 1548.


# perl -MCPAN (원래 -e shell까지 붙여야 정상이다)
Attempt to reload Scalar/Util.pm aborted.
Compilation failed in require at /usr/lib64/perl5/Safe.pm line 4.
BEGIN failed--compilation aborted at /usr/lib64/perl5/Safe.pm line 4.
Compilation failed in require at /usr/local/share/perl5/CPAN.pm line 56.
BEGIN failed--compilation aborted at /usr/local/share/perl5/CPAN.pm line 56.
Compilation failed in require.
BEGIN failed--compilation aborted.

갑자기 웬 GLIBC_2.14 에러가 나는 것일까? /usr/lib64/perl5/auto/List/Util/Util.so 라이브러리의 날짜를 살펴보니 바로 오늘 낮이다. 하반부 에러에서 보이는 Safe.pm 모듈의 네번째 줄에서도 use Scalar::Util이 선언되었다. 아마도 오늘 linuxbrew를 시험삼아 설치하다가 설정이 틀어진 모양이다. 이를 어떻게 하나... Perl을 다시 설치하기도 이상하고, OS를 새로 업그레이드하는 것도 엄두가 안나고...

눈 앞이 캄캄해졌다. 이를 어쩐다. 생각을 해 보자, 생각을... 혹시 List::Utils만 새로 설치하면 되지 않을까? 내 컴퓨터에서는 어차피 GLIBC_2.14를 사용하도록 컴파일이 되지 않으니까 말이다. CPAN에서 Scalar-List-Utils 1.45를 소스로 받아다가 빌드하여고 인스톨하였다. 설치 과정 중에 아무런 문제가 발생하지 않았고, 설치 후에는 Perl 동작도 정상 상태로 되돌아왔다. 

휴! 가슴을 쓸어내린다.

그러면 CentOS에서 Roary 설치 작업을 마무리해 보도록 하자. brew install로 설치하면 에러가 발생하던 blast+ 2.4.0은 rpm 패키지를 직접 받아서 실로 오랜만에 사용하는 rpm -Uvh 명령으로 설치해 버렸다. 항상 yum만 사용하다 보니 rpm을 명령행에서 직접 실행하는 것도 매우 새롭다.

웹사이트에서는 다음 명령으로 Roary 설치를 마치도록 되어 있었다.

sudo cpanm -f Bio::Roary

sudo를 하지 않고 직접 수퍼 유저로 전환한 뒤 .linuxbrew/bin/cpanm -f Bio::Roary를 실행하였다. 외견상으로는 아무런 문제 없이 설치가 끝났다. 자, 그런데 roary 프로그램은 어디로 갔나? 우분투에 설치했을 때에는 /usr/bin/roary로 복사가 되었다. CentOS에서는 어디로 갔을까? root의 .cpanm/build.log까지 뒤져서 겨우 /usr/local/bin/roary로 다른 스크립트와 같이 복사가 되었음을 알아내었다. 

perl -MCAPN -e shell 또는 cpan 유틸리티가 있음에도 불구하고 cpanm을 따로 쓰는 이유가 뭔지를 잘 모르겠다. 

댓글 없음: