2018년 3월 21일 수요일

Bio-Linux 8.0.7(Ubuntu 14.04.5 LTS 기반)에 pyenv 설치하기

지금껏 CentOS 6.9를 사용해 오다가 7.3-1611로 업데이트를 위한 준비를 진행하고 있다. GCC와 python 등의 버전 문제로 꼭 필요한 응용프로그램을 실행하는데 많은 불편함이 있었다. Linuxbrewpyenv 등이 뒤죽박죽된 아주 골치아픈 상황이었다.

이와는 별도로 현장연구를 수강하는 학생을 위해서 Bio-Linux 8의 .ova 파일을 VirtualBox에 '가져오기'를 하여 이것저것을 시연하고 있는데, python 3.5를 설치하기 위한 사전 작업으로 pyenv를 설치하려는 과정에서 난관에 부딛혔다. 대충 설치는 한 것 같은데 python 설치가 안된다.

생각해보니 CentOS에서 pyenv를 설치한 적은 있는데 우분투 기반에서는 아직 해 보지 않았다. 뭐가 문제일까? 답이 잘 찾아지지 않아서 conda를 통해서 python 3.x를 설치한 다음 pip를 사용하여 다른 python 응용프로그램을 깔아보았다. 이렇게 하니 문제는 없다. 어느 python interpreter를 사용하도록 $PATH를 설정하느냐에 따라서 다른 프로그램의 설치도 알아서 된다. 하지만 내가 원하는 것은 이게 아니었다.

다시 pyenv의 GitHub 사이트를 방문하여 설치 방법을 주의깊게 읽어보았다. 아! git clone 명령을 내릴 때 목표 directory를 잘못 설정한 것이었다. 다른 프로그램을 클로닝하듯이 다음과 같이 명령을 내린 것이 나의 실수였다.
$ git clone https://github.com/pyenv/pyenv.git
이렇게 하면 현 디렉토리에 git라는 이름의 클론이 생긴다. 하지만 pyenv는 일반적인 응용프로그램과는 다르다. 그 하위에 많은 리소스를 계층적으로 갖고 있어서 함부로 이름을 바꾸거나 지워서는 안된다. 따라서 숨김 디렉토리에 존재해야 한다. GitHub 사이트의 설명된 설치 방법에는 다음과 같이 클론을 만들라고 분명히 나와있다.
 $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
이것이 전부가 아니다. startup script에 몇 줄을 써 넣어야 한다. .bashrc인가, 혹은 .bash_profile인가? 설치 설명서에는 bash는 .bash_profile, zsh은 .zshenv, 우분투와 페도라는 .bashrc라고 하였다. Bio-Linux가 zshell을 쓴다고 하여 .zshenv에 써 넣는 것이 아니다. 우분투에 대해서는 .bashrc라고 하지 않았다.

정리하자면 다음과 같이 하면 된다.
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc
Syntaxhighlighter를 써야 하는데 아직도 익숙하지 않다. 이제 exec $SHELL이라 명령하여 shell을 재기동한다. 그러고나서 pyenv install 3.5.1이라 하면 무사히 설치가 된다.

문제점 발견

'pyenv install 3.5.1'을 하면 에러가 발생한다. 위의 사례에서 설치에 성공했던 것은 이것 저것을 건드리다가 Oh My Zsh(링크)가 설치된 상태에서 실행했기 때문이 것으로 보인다. 깨끗한 우분투 14.x 또는 16.x에서는 잘 안된다. 그러나 'pyenv install'로 anaconda 혹은 miniconda를 설치하면 잘 된다.

댓글 없음: