AI 에이전트용 자동화 가이드 — 이 문서를 순서대로 읽고 각 단계를 실행하여 macOS 개발 환경을 구성합니다. 모든 명령어는 복사하여 터미널에 붙여넣을 수 있습니다. 각 단계마다 성공 여부를 검증하세요.
읽는 방법 —
(선택)·(대안)표시가 붙은 섹션은 건너뛰어도 기본 환경 구성에는 지장이 없습니다. 특히 버전 매니저는 택1입니다. 기본 구성은 fnm(Node) + pyenv(Python)이며, 6.5의mise로 통합하려면 fnm·pyenv 단계를 건너뛰세요. 셋을 모두 활성화하면~/.zshrc에서 PATH가 충돌합니다.
- 사전 확인
- Xcode Command Line Tools
- Homebrew (패키지 매니저)
- Git 설정
- Shell 환경 (Zsh + Oh My Zsh + Starship)
- Node.js 환경
- Python 환경
- Docker 환경
- VS Code (에디터)
- AI/LLM 개발 도구
- 기타 유틸리티
- 언어 런타임 & 데이터베이스
- 클라우드 & 인프라 CLI
- 폰트
- 최종 검증
sw_vers요구사항: macOS 13 (Ventura) 이상 검증:
ProductVersion필드가13.x이상이면 통과 참고: 이 가이드는 macOS 26.5 (Apple Silicon)에서 검증되었습니다.
uname -m
arm64→ Apple Silicon (M1/M2/M3) → Homebrew 경로:/opt/homebrewx86_64→ Intel → Homebrew 경로:/usr/local이후 명령어는 아키텍처에 따라 Homebrew 경로를 자동으로 선택합니다.
df -h / | tail -1 | awk '{print $4}'요구사항: 최소 20GB 이상 여유 공간 권장
macOS에서 컴파일 도구(git, make, clang 등)를 사용하기 위해 필요합니다.
xcode-select --install이미 설치된 경우
xcode-select: error: command line tools are already installed메시지가 표시됩니다.
검증:
xcode-select -p
# 출력 예시: /Library/Developer/CommandLineTools
git --version
# 출력 예시: git version 2.39.x/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"설치 중 비밀번호 입력이 필요할 수 있습니다.
if [ "$(uname -m)" = "arm64" ]; then
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
fi검증:
brew doctor
# 출력: Your system is ready to brew.
brew --version
# 출력 예시: Homebrew 4.x 이상brew install \
git \
wget \
curl \
jq \
ripgrep \
fd \
tree \
htop \
tmux검증:
for pkg in git wget curl jq rg fd tree htop tmux; do
echo -n "$pkg: "
command -v "$pkg" && echo "✓" || echo "✗ MISSING"
done기본 명령어를 더 빠르고 보기 좋게 대체하는 도구들입니다.
brew install \
bat \
eza \
btop \
fzf \
mosh \
pipx \
git-lfs
bat(cat 대체, 문법 강조) ·eza(ls 대체) ·btop(htop 대체, 시각화)fzf(퍼지 파인더) ·mosh(끊김 없는 SSH) ·pipx(Python CLI 격리 설치) ·git-lfs(대용량 파일)- 프롬프트
starship, 통합 버전 매니저mise, App Store CLImas는 각 전용 섹션에서 설치합니다.
검증:
for pkg in bat eza btop fzf mosh pipx git-lfs; do
echo -n "$pkg: "
command -v "$pkg" && echo "✓" || echo "✗ MISSING"
done# 아래 값을 본인 정보로 변경하세요
GIT_NAME="Jeongseok Oh"
GIT_EMAIL="jeongsk@example.com"
git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_EMAIL"git config --global init.defaultBranch main
git config --global core.editor "code --wait" # VS Code를 기본 에디터로
git config --global pull.rebase false
git config --global core.autocrlf input
git config --global core.precomposeunicode true # macOS 한글 파일명 정규화ssh-keygen -t ed25519 -C "$GIT_EMAIL" -f ~/.ssh/id_ed25519 -N ""SSH 키를 GitHub에 등록하려면:
cat ~/.ssh/id_ed25519.pub출력된 공개키를 https://github.com/settings/keys 에서 등록하세요.
검증:
ssh -T git@github.com
# 출력: Hi jeongsk! You've successfully authenticated...# --unattended: 설치 후 새 zsh 세션으로 전환하지 않음(자동화 시 멈춤 방지)
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended# zsh-autosuggestions (명령어 자동 완성)
git clone https://github.com/zsh-users/zsh-autosuggestions \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
# zsh-syntax-highlighting (명령어 구문 강조)
git clone https://github.com/zsh-users/zsh-syntax-highlighting \
${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting# ~/.zshrc 의 plugins 라인을 찾아 다음으로 교체
sed -i '' 's/^plugins=(.*/plugins=(git zsh-autosuggestions zsh-syntax-highlighting docker docker-compose node npm python)/' ~/.zshrcsource ~/.zshrc검증:
echo $SHELL
# 출력: /bin/zsh
omz version
# 출력 예시: 1.x.x빠르고 미니멀한 크로스 셸 프롬프트입니다. oh-my-zsh 테마 대신 사용할 수 있습니다.
brew install starship
echo 'eval "$(starship init zsh)"' >> ~/.zshrc
source ~/.zshrc검증:
starship --version
# 출력 예시: starship 1.x.xbrew install fnmecho 'eval "$(fnm env --use-on-cd --shell zsh)"' >> ~/.zshrc
source ~/.zshrc(선택) nvm 호환 alias —
nvm명령이 손에 익었다면 alias를 추가할 수 있습니다. fnm은install·use·ls·current등 자주 쓰는 명령은 nvm과 호환되지만,nvm alias default같은 일부 서브커맨드는 다릅니다(fnm은fnm default)..nvmrc/.node-version자동 인식은 위--use-on-cd옵션으로 이미 지원됩니다.echo 'alias nvm="fnm"' >> ~/.zshrc
fnm install --lts
fnm default lts-latest
fnm use lts-latest검증:
node --version
# 출력 예시: v22.x.x (LTS)
npm --version
# 출력 예시: 10.x.x
fnm --version
# 출력 예시: 1.x.x
pnpm은 Node 버전에 묶이지 않도록 Homebrew로 설치하는 것을 권장합니다.
brew install pnpm
npm install -g \
typescript \
ts-node \
yarn \
vercel \
prettier \
eslint검증:
for cmd in tsc pnpm yarn vercel prettier eslint; do
echo -n "$cmd: "
command -v "$cmd" && echo "✓" || echo "✗ MISSING"
donemise는 Node·Python·Go·Elixir 등 여러 런타임 버전을 단일 도구로 관리합니다. fnm·pyenv를 따로 쓰는 대신 mise 하나로 통합할 수 있습니다. (PATH가 충돌할 수 있으니, 통합 시 기존 fnm/pyenv 초기화 라인을 정리하세요.)
brew install mise
echo 'eval "$(mise activate zsh)"' >> ~/.zshrc
source ~/.zshrc
# 예시: 전역 기본 버전 지정
mise use -g node@lts python@3.12검증:
mise --version
mise lsbrew install pyenv가상환경까지 pyenv로 관리하려면
pyenv-virtualenv를 함께 설치합니다.
brew install pyenv-virtualenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
source ~/.zshrcpyenv install 3.12
pyenv global 3.12검증:
python --version
# 출력 예시: Python 3.12.x
pip --version
# 출력 예시: pip 24.xpip install --upgrade pip setuptools wheel
# pipx PATH 등록 (최초 1회)
pipx ensurepath
# 독립 실행 CLI 도구는 pipx로 격리 설치 (전역 pip 오염·의존성 충돌 방지)
for tool in ipython black ruff mypy poetry pipenv pre-commit; do
pipx install "$tool"
done
pytest/pytest-cov는 보통 프로젝트별 가상환경에 설치합니다. 전역으로도 쓰려면:pipx install pytest && pipx inject pytest pytest-cov
검증:
for cmd in ipython black ruff mypy poetry pre-commit; do
echo -n "$cmd: "
command -v "$cmd" && echo "✓" || echo "✗ MISSING"
doneuv는 Astral에서 만든 Rust 기반 도구로, pip·virtualenv·poetry를 대체할 수 있습니다. pyenv와 함께 사용하거나 단독으로 Python 버전까지 관리할 수 있습니다.
# Homebrew로 설치
brew install uv검증:
uv --version
# 출력 예시: uv 0.x.x기본 사용 예시:
# 새 프로젝트 초기화 (pyproject.toml 생성)
uv init myproject && cd myproject
# 패키지 추가 (가상환경 자동 생성·관리)
uv add requests
# Python 버전 설치·고정
uv python install 3.12
# 스크립트 실행
uv run python main.pyDocker Desktop은 Homebrew로도 설치 가능하지만, 공식 다운로드를 권장합니다.
# Homebrew로 설치 (cask 정식 이름은 docker-desktop)
brew install --cask docker-desktopopen -a DockerDocker Desktop이 처음 실행되는 동안 라이선스 동의와 권한 설정이 필요할 수 있습니다. Docker 엔진이 완전히 시작될 때까지 30~60초 기다립니다.
# Docker Desktop에 내장된 Compose V2 확인
docker compose version검증:
docker run --rm hello-world
# 출력: Hello from Docker! ...brew install --cask visual-studio-code# code 명령어를 PATH에 등록 (VS Code 내에서 Cmd+Shift+P → "Shell Command: Install 'code' command in PATH")
# 또는 직접 심링크:
if [ "$(uname -m)" = "arm64" ]; then
ln -sf "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" /opt/homebrew/bin/code
else
ln -sf "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" /usr/local/bin/code
ficode --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-python.black-formatter
code --install-extension charliermarsh.ruff
code --install-extension esbenp.prettier-vscode
code --install-extension dbaeumer.vscode-eslint
code --install-extension bradlc.vscode-tailwindcss
code --install-extension ms-azuretools.vscode-docker
code --install-extension github.copilot
code --install-extension github.copilot-chat
code --install-extension eamodio.gitlens
code --install-extension yzhang.markdown-all-in-one
code --install-extension ms-vscode-remote.remote-containers
code --install-extension tldraw-org.tldraw-vscode검증:
code --list-extensions --show-versionspip install \
langchain \
langchain-community \
langchain-openai \
langchain-anthropic \
langgraph \
chromadb \
tiktoken \
unstructured \
python-dotenv# Python MCP SDK
pip install mcpJS/TS SDK
@modelcontextprotocol/sdk는 전역(-g)이 아니라 프로젝트별 의존성으로 설치합니다:npm install @modelcontextprotocol/sdk
npm install -g obsidian-clinpm install -g n8n검증:
# Python 패키지 import 검증
for env in langchain langgraph chromadb tiktoken mcp; do
echo -n "$env: "
if python -c "import ${env//-/_}" 2>/dev/null; then echo "✓"; else echo "✗"; fi
done
# n8n (전역 CLI) 검증
echo -n "n8n: "
if command -v n8n &>/dev/null; then echo "✓"; else echo "✗"; fibrew install gh
gh auth login웹 기반 인증 또는 토큰 인증을 선택하고 안내를 따르세요.
# 터미널
brew install --cask ghostty warp
# 생산성 유틸리티
brew install --cask raycast rectangle karabiner-elements shottr keka itsycal switchhosts
# 브라우저
brew install --cask brave-browser firefox google-chrome
# 협업·노트
brew install --cask slack discord obsidian notion
# AI 개발 앱
brew install --cask cursor zed chatgpt cherry-studio ollama-app lm-studio
# 미디어·DB·기타
brew install --cask iina vlc db-browser-for-sqlite bruno fork utm검증:
for app in "Ghostty" "Raycast" "Rectangle" "Brave Browser" "Cursor" "Obsidian"; do
echo -n "$app: "
ls "/Applications/$app.app" &>/dev/null && echo "✓" || echo "✗ NOT INSTALLED"
donemas는 Mac App Store 앱을 CLI로 설치합니다. 먼저 App Store 앱에서 Apple 계정으로 로그인해야
mas install이 동작합니다.
brew install mas
# 로그인 계정 확인 (미로그인 시 App Store 앱에서 먼저 로그인)
mas account
# 앱 검색 → 출력된 ID 확인 → 설치
mas search Amphetamine
# 937984704 Amphetamine (5.x) ← 맨 앞 숫자가 앱 ID
mas install 937984704 # 검색 결과에서 확인한 ID로 설치
# 메뉴바 CPU 모니터 RunCat 설치
mas install 1429033973 # RunCat
# 여러 앱을 ID로 한 번에 설치할 수도 있습니다
# mas install 497799835 425424353 # 예: Xcode, The Unarchiver설치된 MAS 앱 목록은
mas list로, 업데이트는mas upgrade로 관리합니다. 자주 쓰는 앱 ID를 모아두면 재설치 시 편리합니다.
검증:
mas version
# 출력 예시: 1.8.xbrew install go rust openjdk@17Apple Silicon에서
openjdk@17은 keg-only이므로, 시스템에 JDK로 등록하려면:sudo ln -sfn /opt/homebrew/opt/openjdk@17/libexec/openjdk.jdk \ /Library/Java/JavaVirtualMachines/openjdk-17.jdk
javac등을 PATH에서 바로 쓰려면 다음도 추가합니다:echo 'export PATH="/opt/homebrew/opt/openjdk@17/bin:$PATH"' >> ~/.zshrc
검증:
go version
rustc --version
java -versionbrew install postgresql@16 mysql서비스 실행/중지:
brew services start postgresql@16 brew services start mysql
검증:
brew services list# 클라우드 CLI
brew install awscli azure-cli
brew install --cask gcloud-cli
# 네트워크·인프라
brew install tailscale cloudflared cloudflare-wrangler검증:
aws --version
az version
gcloud --version개발용 고정폭 폰트와 한글 폰트입니다. (Nerd Font는 아이콘 글리프 포함)
brew install --cask \
font-jetbrains-mono-nerd-font \
font-d2coding-nerd-font \
font-maple-mono-nf \
font-cascadia-code \
font-pretendard \
font-noto-sans-kr설치된 폰트는
Font Book앱 또는시스템 설정 → 글꼴에서 확인할 수 있습니다.
모든 설치가 완료되었는지 확인하는 종합 검증 스크립트입니다.
echo "=========================================="
echo " macOS 개발 환경 셋팅 검증"
echo "=========================================="
check() {
if command -v "$1" &>/dev/null; then
echo "✓ $1"
else
echo "✗ $1 — 누락됨"
fi
}
echo ""
echo "[ 시스템 도구 ]"
check brew
check git
check wget
check jq
check rg
check fd
check tree
check htop
check tmux
echo ""
echo "[ Shell ]"
check zsh
check starship
echo " SHELL: $SHELL"
echo ""
echo "[ 모던 CLI ]"
check bat
check eza
check btop
check fzf
check mise
check mas
echo ""
echo "[ Node.js ]"
check node
check npm
check fnm
check tsc
check pnpm
check yarn
echo ""
echo "[ Python ]"
check python
check pip
check pyenv
check uv
check ipython
check black
check ruff
check poetry
echo ""
echo "[ Docker ]"
check docker
echo ""
echo "[ VS Code ]"
check code
echo ""
echo "[ GitHub CLI ]"
check gh
echo ""
echo "[ 클라우드 / 런타임 ]"
check aws
check az
check gcloud
check go
check rustc
echo ""
echo "=========================================="
echo " macOS 버전: $(sw_vers -productVersion)"
echo " 아키텍처: $(uname -m)"
echo " 디스크 여유: $(df -h / | tail -1 | awk '{print $4}')"
echo "=========================================="# Homebrew로 설치된 모든 패키지 업데이트
brew update && brew upgrade
# Node.js 글로벌 패키지 업데이트
npm update -g
# Python 패키지 업데이트
pip install --upgrade $(pip list --outdated | awk 'NR>2{print $1}')
# fnm 최신 LTS 확인
fnm ls-remote --lts
# Mac App Store 앱 업데이트
mas upgrade
# mise 관리 도구 업데이트
mise upgrade# Homebrew 패키지 목록 백업
brew bundle dump --file=~/.Brewfile --force
# Homebrew 패키지 복원
brew bundle install --file=~/.Brewfile문서 버전: 1.2.0 마지막 업데이트: 2026-05-30 대상 환경: macOS 13+ (Apple Silicon / Intel) — macOS 26.5에서 검증