2018년 3월 23일 금요일

[CentOS 7] root가 설치한 perl module은 어디로 갔는가?

사용하던 서버 중 하나를 CenOS 7.4.1708로 업그레이드한 다음 필요한 프로그램을 설치하면서 CentOS 6과는 얼마나 달라졌는지를 체험해 나가고 있다. Python, R, 생명정보분석용 프로그램의 관리에는 Conda를 시험삼아 쓰기 시작하였다. 아직은 Anaconda와 Conda 중 어떻게 부르는 것이 정확한지도 잘 알지 못한다. /opt/anaconda3에 패키지가 하나씩 설치되는 중인데 그 분량이 상당히 많다.

관리자 권한으로 Perl module을 몇 개 설치한 다음 BioPerl을 깔았다. 일반 사용자로 되돌아와서 BioPerl을 사용하는 간단한 스크립트를 하나 시험삼아 구동하였더니 모듈이 없다면서 에러가 난다. 오잉? 도대체 어디다 설치를 한거지? 다시 root로 들어가서 @INC를 확인해 보았다. 왜 이렇게 요소가 많은가! 빨강색으로 표시한 경로는 CentOS 6의 관리자 모드에서는 보이지 않던 것이다. 모듈을 몽땅 여기에 깔아버렸으니 일반 사용자가 접근이 불가능했던 것이다.

#  perl -e "print join \"\n\", @INC"
/root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi
/root/perl5/lib/perl5/5.16.3
/root/perl5/lib/perl5/x86_64-linux-thread-multi
/root/perl5/lib/perl5

/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5
.
CentOS 6.x에서는 특별히 손을 대기 전까지는 PERL5LIB 변수가 정의되어있지 않은 상태였다. 그런데 CentOS 7.4에서는 그렇질 않다.
# echo $PERL5LIB
/root/perl5/lib/perl5:
흠.. startup script에서 미리 손을 써 둔 것이 분명하다. 범인은 .bashrc였다. 다음과 같은 라인이 떡하니 들어있는 것이 아닌가. 이런 요망한 것들이 있나...


전부 주석처리를 한 뒤 다시 로그인을 하여 Perl module을 재설치하였다. 비로소 일반 사용자 모드에서 모듈을 사용하는 것이 가능해졌다. 펄을 꽤 오랫동안 사용해 왔는데도 아직도 이렇게 사람을 혼동스럽게 만드는 일이 생긴다.

댓글 없음: