# 설치

> macOS, Linux, Windows(WSL 경유)에 Claude Code를 설치합니다. Node.js 18 이상이 필요합니다.

## 요구사항

- **Node.js 18 이상** — Claude Code는 시작 시 Node.js 버전을 확인하고, 18 미만이면 오류와 함께 종료합니다.
- **npm** — Node.js에 포함되어 있습니다.

현재 버전 확인:

```bash
node --version
npm --version
```

---

## Claude Code 설치

npm으로 전역 설치:

```bash
npm install -g @anthropic-ai/claude-code
```

설치 후 동작 확인:

```bash
claude --version
```

---

## 플랫폼별 안내

### macOS

macOS에서는 npm 전역 설치가 기본적으로 작동합니다. `npm install -g` 실행 시 권한 오류가 발생하면 두 가지 옵션이 있습니다:

**옵션 A: npm 권한 수정 (권장)**

홈 폴더의 디렉토리를 사용하도록 npm을 설정:

```bash
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
```

셸 프로파일(`~/.zshrc` 또는 `~/.bash_profile`)에 다음 추가:

```bash
export PATH=~/.npm-global/bin:$PATH
```

프로파일 다시 로드 후 설치:

```bash
source ~/.zshrc
npm install -g @anthropic-ai/claude-code
```

**옵션 B: Node 버전 관리자 사용**

[nvm](https://github.com/nvm-sh/nvm) 또는 [fnm](https://github.com/Schniz/fnm) 같은 도구는 홈 디렉토리에 Node.js를 설치해서 전역 권한 문제를 완전히 피할 수 있습니다:

```bash
# nvm 사용
nvm install --lts
nvm use --lts
npm install -g @anthropic-ai/claude-code
```

### Linux

대부분의 Linux 배포판에서 `npm install -g`는 `sudo` 또는 npm prefix 수정이 필요합니다. `sudo` 사용은 나중에 권한 문제를 일으킬 수 있으므로 권장하지 않습니다.

**권장: Node 버전 관리자 사용**

```bash
# nvm 설치
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash

# 셸 다시 로드 후 Node.js 설치
nvm install --lts
nvm use --lts

# Claude Code 설치
npm install -g @anthropic-ai/claude-code
```

**대안: npm 전역 prefix 수정**

```bash
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g @anthropic-ai/claude-code
```

### Windows (WSL)

Claude Code는 Windows Subsystem for Linux(WSL)를 통해 Windows에서 실행됩니다. 커맨드 프롬프트나 PowerShell에서 직접 실행하는 것은 지원되지 않습니다.

**1단계: WSL 설치**

관리자 권한으로 PowerShell 열고 실행:

```powershell
wsl --install
```

메시지가 나타나면 재시작. 기본적으로 Ubuntu와 함께 WSL 2가 설치됩니다.

**2단계: WSL 터미널 열기**

시작 메뉴에서 Ubuntu를 실행하거나, PowerShell에서 `wsl`을 실행합니다.

**3단계: WSL 안에 Node.js 설치**

```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
```

**4단계: Claude Code 설치**

```bash
npm install -g @anthropic-ai/claude-code
```

> 📝 항상 WSL 터미널 안에서 `claude`를 실행하세요 — Windows CMD나 PowerShell에서 실행하지 마세요. 프로젝트 파일은 WSL 파일시스템(`~/projects/` 등) 안에 있어야 최상의 성능을 발휘합니다. `/mnt/c/...`를 통한 Windows 파일 접근은 가능하지만 느립니다.

---

## 업데이트

최신 버전으로 업데이트:

```bash
npm update -g @anthropic-ai/claude-code
```

또는 Claude Code 내장 업데이트 커맨드 사용:

```bash
claude update
```

현재 버전 확인:

```bash
claude --version
```

---

## 제거

Claude Code 제거:

```bash
npm uninstall -g @anthropic-ai/claude-code
```

`claude` 바이너리가 제거됩니다. `~/.claude/`의 설정 파일은 자동으로 제거되지 않습니다. 삭제하려면:

```bash
rm -rf ~/.claude
```

---

## 문제 해결

### 설치 후 `claude` 커맨드를 찾을 수 없음

npm 전역 bin 디렉토리가 `PATH`에 없는 경우입니다.

npm이 전역 바이너리를 설치하는 위치 확인:

```bash
npm config get prefix
```

해당 경로의 `bin` 서브디렉토리를 `PATH`에 추가해야 합니다. 예를 들어 출력이 `/home/you/.npm-global`이면:

```bash
export PATH=/home/you/.npm-global/bin:$PATH
```

셸을 다시 로드(`source ~/.zshrc` 또는 새 터미널 열기) 후 다시 시도하세요.

### Node.js 버전이 18 미만

Claude Code는 Node.js 18 이상이 필요합니다. 시작 시 이 오류가 보이면:

```
Error: Claude Code requires Node.js version 18 or higher.
```

버전 관리자를 사용해 Node.js를 업그레이드하세요:

```bash
# nvm
nvm install --lts
nvm use --lts

# fnm
fnm install --lts
fnm use --lts
```

### npm install -g 시 권한 거부

`sudo npm install -g`를 사용하지 마세요 — root 소유 파일이 남아 추가 문제를 일으킬 수 있습니다. 대신 npm prefix를 사용자 쓰기 가능 디렉토리로 수정하세요:

```bash
mkdir -p ~/.npm-global
npm config set prefix ~/.npm-global
export PATH=~/.npm-global/bin:$PATH
npm install -g @anthropic-ai/claude-code
```

### 첫 실행 시 인증 실패

브라우저 기반 OAuth 흐름이 실패하거나 브라우저를 사용할 수 없는 경우, 환경 변수로 API 키를 직접 설정하세요:

```bash
export ANTHROPIC_API_KEY=sk-ant-...
claude
```

셸 프로파일에 추가하면 영구적으로 설정됩니다. API 키는 [Anthropic Console](https://console.anthropic.com)에서 발급받을 수 있습니다.

### Docker 또는 CI 환경에서 실행

비대화형 환경에서는 환경 변수로 인증하세요:

```bash
export ANTHROPIC_API_KEY=sk-ant-...
```

비대화형으로 실행하려면 `-p` 플래그 사용:

```bash
claude -p "테스트 스위트를 실행하고 실패를 보고해줘"
```

샌드박스 컨테이너에서 권한 프롬프트 없이 Claude Code를 작동시켜야 한다면 `--dangerously-skip-permissions` 플래그를 사용하세요. 이 플래그는 Claude Code의 샌드박스 안전 검사를 통과한 환경(인터넷 접근 없음, 컨테이너 외부에서 root로 실행하지 않음)에서만 작동합니다.
