lynlab logo

blog

about

#development

asdf — 하나의 명령어로 관리하는 버전 매니저

요즘 세상에 하나의 언어로 모든 시스템을 개발하는 경우는 보기 드뭅니다. asdf는 각각의 개발 환경을 플러그인 형식으로 만들어 하나의 명령어로 관리하기 위해 탄생했습니다.

profile picture

Hoerin Doh | 2021. 05. 10

우리는 하나의 개발 장비에서 여러 버전의 프로그래밍 언어를 사용하기 위해 버전 매니저를 사용합니다. NodeJS에서는 nvm, 파이썬에서는 pyenv, 루비에서는 rbenv 등이 유명하죠.

요즘 세상에 하나의 언어로 모든 시스템을 개발하는 경우는 보기 드뭅니다. MSA, 서버리스 등등의 유행은 개발 환경의 파편화에 앞장서고 있는데요, 언어가 하나씩 추가될 때마다 알맞은 버전 매니저를 찾고, 설치하고, 설정하는 일은 여간 번거로운 것이 아닙니다.

asdf는 각각의 개발 환경을 플러그인 형식으로 만들어 하나의 명령어로 관리하기 위해 탄생했습니다.

설치

원문은 https://asdf-vm.com/#/core-manage-asdf?id=install 을 참조하세요.

Git과 curl만 있다면 간단하게 설치가 가능합니다.

git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"

혹은 brew를 이용할 수도 있습니다.

brew install asdf

이후 자신의 쉘 환경에 따라 ~/.bash_profile 혹은 ~/.zshrc 에 다음 내용을 추가하고, 터미널을 재시작합니다.

. $HOME/.asdf/asdf.sh

명령어 사용 방법

아래는 파이썬 3.9.0 을 설치하는 방법의 예제입니다.

asdf에서는 각 개발 환경을 플러그인이라는 개념으로 관리하고 있습니다. 예를 들어 파이썬 런타임 관리를 위해서는 python 플러그인을 설치하는 방식입니다.

asdf plugin add python

이후 특정 버전의 런타임 설치 및 설정 방식은 기존의 버전 매니저들과 유사합니다.

# 설치 가능한 모든 버전 목록 조회
asdf list all python

# 특정 버전 설치
asdf install python 3.9.0

# 현재 혹은 전체 디렉토리에서 Python 3.9.0 사용
asdf local python 3.9.0   # 현재 디렉토리
asdf global python 3.9.0  # 전체 디렉토리

.tool-versions

Rbenv는 .ruby-version 파일을 통해 해당 디렉토리에서 사용할 런타임을 관리합니다. 이를 git에 추가해두면 여러 사람이 하나의 런타임을 공유할 수 있는 장점이 있습니다.

Asdf도 유사한 .tool-versions 라는 파일을 제공합니다. 예를 들어 하나의 프로젝트에서 파이썬 3.9.0과 루비 3.0.1을 동시에 사용한다면, 해당 프로젝트의 루트 디렉토리에 다음 내용의 파일을 추가해줍니다.

python 3.9.0
ruby 3.0.1

추후 asdf를 사용하는 다른 개발자가 개발 환경을 설정해야한다면, 아래 명령어 한 줄로 파일에 명시된 모든 런타임을 내려받을 수 있습니다.

asdf install

관련 포스트

Keybase와 GPG 키를 이용해 Git 커밋에 서명하기 썸네일

Keybase와 GPG 키를 이용해 Git 커밋에 서명하기

Git은 커밋한 사람의 이메일 주소를 검증하지 않습니다. 하지만 GPG 키를 이용해 커밋에 서명을 남기면 커밋한 사람이 본인임을 증명할 수 있습니다.

[Drone] 인메모리 볼륨을 활용해 CI 속도 향상하기 썸네일

[Drone] 인메모리 볼륨을 활용해 CI 속도 향상하기

데이터 IO 작업으로 인해 CI/CD 프로세스에 병목이 생긴다면, 인메모리 볼륨을 활용해 속도를 크게 향상시킬 수 있습니다.

[Golang] Docker 멀티 스테이지 빌드로 한 큐에 이미지 만들기 썸네일

[Golang] Docker 멀티 스테이지 빌드로 한 큐에 이미지 만들기

멀티 스테이지 빌드 기능을 이용하면 Go 컴파일러가 없는 환경에서도 명령어 한 줄로 Docker 이미지를 만들 수 있습니다.

크리에이티브 커먼즈 라이선스

본 사이트의 저작물은 별도의 언급이 없는 한 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0  국제 라이선스에 따라 이용할 수 있습니다.

© 2011 - 2021 Hoerin Doh, All rights reserved.