본문 바로가기
C.W.K.
Stream
Lesson 08 of 08 · published

mise / asdf: 다도구 버전 매니저

~10 min · mise, asdf, version-manager

Level 0창 구경꾼
0 XP0/95 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

여러 런타임 버전을 프로젝트 선언으로 관리해

mise와 asdf는 Python, Node, Ruby 같은 여러 도구의 버전을 프로젝트 설정에 묶어 선택하게 해. 언어별 관리자를 무조건 없애는 도구라기보다 지원하는 런타임의 선택 과정을 한 흐름으로 모으는 선택지야. 저장소에 이미 Conda, pyenv, nvm처럼 명시된 소유자가 있다면 두 번째 관리자를 겹치기 전에 기존 CI와 배포 계약부터 확인해.

mise를 설치하고 셸에 연결해

brew install mise
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
exec zsh
mise doctor

활성화 코드는 디렉터리에 따라 PATH를 바꿀 수 있어. 새 셸에서 type -a mise와 진단 출력을 보고 어느 설치본과 설정 파일이 선택됐는지 확인해.

프로젝트별 버전을 고정해

mise use python@3.12 node@20 ruby@3.3
cat .mise.toml
mise current

.mise.toml을 저장소의 런타임 선언으로 쓸 수 있어. 팀원이 디렉터리에 들어왔을 때 같은 버전 선택 의도를 공유하지만 설정 파일만으로 시스템 라이브러리, 패키지 lockfile과 가상 환경까지 같아지는 것은 아니야. 설치와 선택 결과를 버전 명령으로 검증해.

전역 기본값은 프로젝트 선언보다 넓게 작용해

mise use -g python@3.12 node@22
mise list
mise upgrade

전역 기본값은 별도 프로젝트 선언이 없는 디렉터리에서 사용돼. upgrade가 어느 고정 값을 바꾸는지 확인하지 않고 실행하면 여러 프로젝트의 실행 결과가 동시에 달라질 수 있어. 변경 전후의 설정 diff와 실제 버전을 기록해.

mise와 asdf의 차이는 운영 계약으로 판단해

mise는 단일 실행 파일, 빠른 활성화와 환경 변수 기능을 제공하고 많은 asdf 플러그인과 호환돼. [env] 선언으로 프로젝트 환경 변수를 관리하고, 별도의 direnv를 설치하지 않아도 디렉터리 진입과 이탈에 맞춰 환경을 바꾸는 hook을 사용할 수 있어. 이미 안정적으로 운영되는 asdf 구성이 있다면 단지 새 도구라는 이유로 바꿀 필요는 없어. 지원 플러그인, 신뢰 모델, CI 설치 방식과 장애 복구 절차를 비교해 선택해.

프로젝트의 기존 런타임 소유자를 존중해

Conda, mise, pyenv와 Homebrew가 동시에 PATH를 바꾸면 셸 시작 순서에 따라 다른 실행 파일이 선택될 수 있어. 저장소 문서, 환경 선언과 서비스 설정 가운데 어느 계층이 런타임을 소유하는지 한 곳으로 정해. 새 관리자를 시험할 때는 기존 구성을 지우지 말고 격리된 환경에서 type -a와 버전 출력을 비교해.

버전 고정은 재현성의 한 층일 뿐이야

같은 Python이나 Node 버전을 골라도 의존성 lockfile, 네이티브 라이브러리, 환경 변수와 운영체제가 다르면 결과가 달라질 수 있어. 런타임 선택, 패키지 설치, 시스템 의존성과 애플리케이션 설정을 서로 다른 선언으로 관리하고 각 층의 검증 방법을 남겨.

자동 활성화는 신뢰 검토가 필요한 코드 실행이야

디렉터리에 들어가는 순간 설정을 읽고 PATH와 환경 변수를 바꾸는 기능은 편하지만, 믿지 않는 저장소의 선언을 자동 승인하면 예상하지 못한 실행 파일이 선택될 수 있어. 신뢰 승인 절차에서 설정 diff를 읽고, 활성화 뒤 command -v와 버전 명령으로 실제 결과를 확인해. 디렉터리를 나갔을 때 원래 환경으로 돌아오는지도 시험해.

Code

mise 부팅·bash
brew install mise
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
exec zsh
cd ~/myproject
mise use python@3.12 node@20
cat .mise.toml

External links

Exercise

mise를 시험 프로젝트에만 연결하고 Python 버전을 .mise.toml에 고정해. 디렉터리 밖과 안에서 command -v pythonpython --version을 비교하고, 설정을 신뢰하기 전후의 선택 결과도 확인해. 기존 프로젝트 런타임 관리자는 바꾸지 마.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.