반응형

예전에 루비를 사용할 때 rbenv로 루비 버전을 관리했었다. 그리고 나중에 파이썬 2.7을 설치할 일이 있어서 알아보니까 파이썬에는 pyenv라는 버전 관리 도구가 있었다. 이름도 비슷하고 원리도 비슷하길래 다른 언어용으론 뭐가 더 있을까 찾아보다가 *env들을 관리하는 anyenv라는 도구를 발견했다. 이야 버전 관리 도구가 많아지니 버전 관리 도구 관리 도구가 등장하네..ㅎㅎ

관련 도구를 설치할 때마다 셸 프로필 파일을 수정해야 하는데 이걸 사용하면 anyenv 처음 설치할 때 한번 수정하고 이후로 추가 도구를 설치할 땐 수정 필요 없이 그냥 명령어로 설치하면 끝난다.

https://github.com/anyenv/anyenv

 

anyenv/anyenv

All in one for **env. Contribute to anyenv/anyenv development by creating an account on GitHub.

github.com

리눅스 환경 (WSL 포함) 기준 설치법

1. anyenv를 클론 뜬다.


git clone https://github.com/anyenv/anyenv ~/.anyenv

2. 사용 중인 셸 환경에 맞게 환경변수를 추가한다.


# bash
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
# Ubuntu Desktop
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc
# Zsh
echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc
# Fish shell
set -Ux fish_user_paths $HOME/.anyenv/bin $fish_user_paths

3. 아래 명령어를 실행하고 시키는 대로 한다.


~/.anyenv/bin/anyenv init

시키는 내용은 별거 아니고 zsh를 사용하는 나는 .zshrc 파일에 eval "$(anyenv init -)"를 추가하는 거였다.

4. 터미널을 닫았다 열면 설치 끝!

대신 exec "$SHELL"을 입력해도 된다.

5. 추가로 anyenv-update 플러그인을 설치하면 좋다. 설치하고 나면 anyenv update 명령어가 추가돼서 설치한 *env와 관련 플러그인을 한꺼번에 업데이트할 수 있다.

https://github.com/znz/anyenv-update

 

znz/anyenv-update

anyenv plugin that provides `anyenv update` command to update all **env and all plugins - znz/anyenv-update

github.com

간단 사용법


anyenv install -l

위 명령어로 설치할 수 있는 *env 목록을 확인할 수 있다.

ruby, python, nodejs, go, java 등 다양한 언어의 버전 관리 도구를 지원한다.


anyenv install rbenv
anyenv install pyenv
anyenv install nodenv
exec $SHELL -l

rbenv install ...
pyenv install ...
nodenv install ...

요런 식으로 필요한 버전 관리 도구를 설치하고 셸을 재실행한 뒤 설치한 도구를 사용하면 된다.

자세한 사용법은 --help 옵션과 각 *env 페이지를 이용하자

나중에 더 알아보니 anyenv 말고 asdf라는 도구도 있었다.

https://asdf-vm.com/

 

asdf - An extendable version manager

 

asdf-vm.com

얘는 rbenv를 기반으로 한 *env들만 지원하는 anyenv와는 다르게 플러그인 추가를 통해 언어뿐만 아니라 일반 소프트웨어들까지 지원하는 듯하다. 또 anyenv는 *env를 설치하고 실제 버전 관리는 *env 명령어로 하는데 asdf는 플러그인 설치 후 asdf 명령어로 직접 버전 관리하는 걸로 보인다.

아직 anyenv가 익숙하고 지원하는 언어도 anyenv 정도면 충분해서 굳이 넘어가진 않았지만 알아두면 좋을 것 같아 같이 소개했다.

반응형

+ Recent posts