LYnLab

소개블로그취미로그

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

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

2021-05-10#프로그래밍

💡 이 글은 작성된지 1년 이상 지났습니다. 정보글의 경우 최신 내용이 아닐 수 있음에 유의해주세요.

우리는 하나의 개발 장비에서 여러 버전의 프로그래밍 언어를 사용하기 위해 버전 매니저를 사용합니다. 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

관련된 글

Rails와 GitHub Actions에 커버리지 레포트를 달아보자

이 블로그의 CMS이기도 한 Shiori를 대폭 리팩토링하면서 테스트가 얼마나 잘 작성되어있는지 궁금해졌습니다.

Rails Global ID로 전역 객체 식별하기

Global ID는 Rails의 모든 객체를 식별할 수 있는 URI(Uniform Resource Identifier)입니다.

Ruby on WebAssembly: 살짝 맛보기

Ruby 3.2에 추가된 WebAssembly 지원을 간단하게 테스트해봅시다.

작성한 댓글은 giscus를 통해 GitHub Discussion에 저장됩니다.

크리에이티브 커먼즈 라이선스크리에이티브 커먼즈 저작자표시크리에이티브 커먼즈 동일조건변경허락

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

© 2011 - 2024 Hoerin Doh, All rights reserved.

LYnLab 로고About MeGitHubTwitterInstagram