Claude Media
Claude Code Macインストール — ネイティブとHomebrew、どちらを選ぶか

Claude Code Macインストール — ネイティブとHomebrew、どちらを選ぶか

Claude CodeをMacに入れる方法は主に3つ。ネイティブインストーラー・Homebrew・npmの違いと、macOS特有のエラーへの対処までまとめます。

Macでの入れ方は3通りある

MacへのClaude Code導入は、ネイティブインストーラー・Homebrew・npmの3経路があります。迷ったらネイティブインストーラーが最短で、ターミナルに1行のcurlコマンドを貼るだけです。3経路は、更新の仕組みがいちばん違います。

まとめ

3経路の違いは更新の扱い

  • ネイティブインストーラー

    バックグラウンドで自動更新されます。書き込み先はホームディレクトリ内です。

  • Homebrew

    自動更新はされず、brew upgradeで手動更新します。他のツールをbrewでまとめて管理している人向けです。

  • npm

    Node.js 22以降が前提のグローバルパッケージです。更新はnpm install -g @anthropic-ai/claude-code@latestで行います。

評価軸ごとの比較はClaude Code Homebrew・npm・ネイティブ導入の比較にあります。

インストール前に確認する要件

導入前に、次の要件を満たしているか確認します。

項目要件
OS要件macOS 13.0以降
メモリ要件4GB以上
プロセッサ要件Appleシリコン(ARM64)またはIntel(x64)
ネットワーク要件インターネット接続が必要
シェル要件zsh(macOSの既定)またはbash
利用地域要件Anthropicの対応国・地域

検索コマンドが使うripgrepは通常はClaude Codeに同梱されており、個別のインストールは不要です。

ネイティブインストーラーで入れて動作を確かめる

ターミナルを開いて、次の手順で進めます。

手順

ネイティブインストーラーの流れ

  1. 1

    curlコマンドを実行する

    claude本体が~/.local/bin/claudeに置かれ、各バージョンの実体は~/.local/share/claude/versions/以下に入ります。

  2. 2

    プロジェクトで claude を起動する

    作業したいディレクトリでclaudeを実行し、ブラウザの案内に沿ってログインします。環境変数ANTHROPIC_API_KEYが設定されている場合は、ブラウザは開かず、そのキーを使うかどうかを一度だけ尋ねられます。

  3. 3

    別のターミナルで確かめる

    claude --versionでバージョンが出れば完了です。出力例は下に載せています。

手順1のコマンドです。

curl -fsSL https://claude.ai/install.sh | bash

手順3のコマンドと、v2.1.289の出力例です。

claude --version
2.1.289 (Claude Code)
 
ls -la ~/.local/bin/claude
lrwxr-xr-x@ 1 user  staff  48 10月  4 08:38 ~/.local/bin/claude -> /Users/user/.local/share/claude/versions/2.1.289

~/.local/bin/claudeは、versions/以下の実体へのシンボリックリンクです。バージョン番号がリンク先のディレクトリ名と一致していれば、ネイティブインストールが正常に入っています。

インストーラーは、このほかにも次の場所を使います。権限エラーが出たときの調査対象になります。

場所用途
~/.claude/downloads/用途ダウンロードしたバイナリの置き場
~/.local/state/claude/用途ロックファイル
~/.cache/claude/用途ダウンロード途中のデータ
~/.claude.json用途グローバル設定。インストール方法もここに記録される

XDG_DATA_HOME・XDG_STATE_HOME・XDG_CACHE_HOMEを設定していると、~/.local/share・~/.local/state・~/.cacheの代わりにそちらが使われます。CLAUDE_CONFIG_DIRを設定していれば、~/.claude.jsonの置き場もそのディレクトリの下に移ります。

署名と公証

バイナリは「Anthropic PBC」名義でコード署名され、Appleの公証も済んでいます。署名を自分で確かめたい場合は、次のコマンドで検証できます。

コード署名を手動で検証する
codesign --verify --verbose ./claude

manifest.jsonの署名検証と合わせると、ダウンロードしたバイナリが改ざんされていないかまで確認できます。マニフェスト署名はv2.1.89以降のリリースから提供されています。

自動更新の挙動

Claude Codeは起動時と実行中に定期的に更新を確認し、バックグラウンドでダウンロードします。更新が効くのは次に起動したときです。直近の更新結果はclaude doctorで見られます。

claude updateを実行すると、次の確認を待たずにすぐ更新できます。更新があればSuccessfully updated from <旧バージョン> to version <新バージョン>と表示され、最新ならClaude Code is up to date (<バージョン>)と出ます。

~/.local/bin/claudeを自作のスクリプトやシンボリックリンクに差し替えている場合、v2.1.207以降は自動更新もclaude updateもそれを置き換えません。新しいバージョンはversions/以下に入り、どれを動かすかは差し替えた側が決めます。管理を戻したいときは~/.local/bin/claudeを削除してclaude updateを実行します。

Homebrewで入れる

Homebrewで他のCLIツールを管理しているなら、caskでの導入も選べます。

brew install --cask claude-code

caskはclaude-codeとclaude-code@latestの2種類で、追従するチャネルが違います(下の「stableとlatestの使い分け」を参照)。入れたcaskに合わせて更新コマンドも変わります。

brew upgrade claude-code
brew upgrade claude-code@latest

環境変数CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATEを1にすると、新しいバージョンが出たときにClaude Code自身がバックグラウンドでこの更新コマンドを代行し、成功後に再起動を促します。対象はClaude Codeのパッケージだけで、brewで入れた他のソフトには影響しません。

Homebrewは更新後も古いバージョンをディスクに残します。容量が気になるときはbrew cleanupを定期的に実行します。

npmで入れる

Node.jsのワークフローに組み込みたい場合は、npmのグローバルパッケージとしても導入できます。

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

npmパッケージはNode.js 22以降が前提です。古いNode.jsではEBADENGINE警告が出ますが、インストールは完了してclaudeも動きます。パッケージはプラットフォーム別の依存関係(Appleシリコンなら@anthropic-ai/claude-code-darwin-arm64、Intelなら@anthropic-ai/claude-code-darwin-x64)経由でネイティブバイナリを取得し、実行時にNode.js自体は使わないためです。

更新はnpm install -g @anthropic-ai/claude-code@latestです。npm update -gは、最初にインストールしたときのsemver範囲を守るので、最新リリースまで進まないことがあります。

sudo npm install -gは使わないでください。権限エラーや意図しない所有権の変更につながります。npm固有の権限エラーが出たときは、ネイティブインストーラーに切り替える方法があります。

stableとlatestの使い分け

ネイティブインストーラーは、バージョン番号かlatest・stableのチャネルを引数に取れます。何も指定しなければlatestで、インストール時に選んだチャネルが自動更新の既定になります。

くらべる

2つのチャネル

業務用のMac向け

stable

最新リリースからおよそ1週間遅れで追従し、大きな不具合が見つかったリリースをスキップします。Homebrewではclaude-code、ネイティブではbash -s stable、設定では"autoUpdatesChannel": "stable"が対応します。

最新機能をすぐ試す環境向け

latest

リリース直後のバージョンをそのまま追跡します。Homebrewではclaude-code@latestが対応します。

stableチャネルを指定する例です。

curl -fsSL https://claude.ai/install.sh | bash -s stable

特定バージョンに固定したい場合はバージョン番号を渡します。claude --versionには、渡した番号がそのまま出ます。

curl -fsSL https://claude.ai/install.sh | bash -s 2.1.89

インストール済みのclaudeからは、claude installでも同じ指定ができます。v2.1.289のclaude install --helpの出力は次のとおりです。

claude install --help
Usage: claude install [options] [target]
 
Install Claude Code native build. Use [target] to specify version (stable,
latest, or specific version)
 
Options:
  --force     Force installation even if already installed
  -h, --help  Display help for command

発売直後のモデルは、stableチャネルが配信するバージョンより新しいClaude Codeを要求することがあります。そのモデルをすぐ使いたいときはlatestに移ります。latestからstableへ切り替えると、現在のバージョンにとどまるか、ダウングレードを許可するかを/configで尋ねられます。とどまるを選ぶとminimumVersionにそのバージョンが入り、以降の自動更新とclaude updateは、その値より古いバージョンを入れません。

インストールで止まったとき

エラー文言ごとに原因を切り分けます。まず通信できているかを見るなら、次のコマンドで確かめます。

curl -sI https://downloads.claude.ai/claude-code-releases/latest

1行目がHTTP/2 200なら、サーバーには届いています。403はプロキシやネットワークフィルターがホストを止めているか、利用地域が対象外のときです。5xxは一時的な障害のことが多く、数分待って再実行します。出力が空・Could not resolve host・タイムアウトなら、ネットワーク側が接続を止めています。社内プロキシ越しなら、HTTPS_PROXYとHTTP_PROXYをプロキシのアドレスにしてからインストーラーを実行します。

dyld: cannot loadが出る

dyld: Symbol not foundやdyld: cannot load、Abort trap: 6が出た場合、バイナリがそのMacのmacOSバージョンに対応していません。libicucoreを参照するSymbol not foundは、macOSがバイナリの要求より古いときに出ます。load command ... is unknownも同じく、macOSが古いことを示します。

Appleメニューの「このMacについて」でバージョンを確認し、13.0未満ならmacOSを更新します。Homebrewも同じバイナリを取得するため、経路を変えても解決しません。詳しいエラーパターンの見分け方はdyld cannot loadエラーの原因と対処にまとめています。

TLS/SSLの接続エラーが出る

curl: (35) TLS connect errorのようなエラーは、TLSハンドシェイクの失敗です。macOS標準のcurlはKeychainの信頼ストアを使うため、macOS自体を更新するとルート証明書も更新されます。

企業のプロキシがTLSを検査する環境ではunable to get local issuer certificateやSELF_SIGNED_CERT_IN_CHAINが出ることがあります。この場合は、プロキシのCA証明書を指定してインストールを実行します。

curl --cacert /path/to/corporate-ca.pem -fsSL https://claude.ai/install.sh | bash

インストール後のClaude Code本体がAPIに接続するときは、同じ証明書をNODE_EXTRA_CA_CERTSで指定します。

export NODE_EXTRA_CA_CERTS=/path/to/corporate-ca.pem

インストールしたのにclaudeが見つからない

zsh: command not found: claudeが出るときは、~/.local/binがPATHに入っていません。次のコマンドで確かめます。

echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"

何も出なければ、zshでは次の2行でPATHに追加します。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

bashを使っているMacでは、書き込み先が~/.bashrcではなく~/.bash_profileです。macOSのターミナルはbashをログインシェルとして起動し、~/.bash_profile・~/.bash_login・~/.profileのうち最初に存在する1つだけを読むためです。~/.bash_loginか~/.profileだけがある場合は、~/.bash_profileを新しく作らず、そのファイルに追記します。

インストールしたシェルのウィンドウは古いPATHのままなので、新しいターミナルを開いて再実行する手もあります。VS Code拡張機能特有の罠を含めた切り分けはClaude Codeのcommand not foundをPATH設定で直すで扱っています。

書き込み権限のエラーが出る

会社支給のMacなどで、インストーラーがEACCES: permission deniedで止まる場合は書き込み権限を疑います。エラーには作れなかったパスが出ます。上の表の場所のうち、まず~/.local/bin/と~/.claude/を調べます。

test -w ~/.local/bin && echo "writable" || echo "not writable"
test -w ~/.claude && echo "writable" || echo "not writable"

どちらかがnot writableと出た場合、ディレクトリを作成し所有者を自分のユーザーに変更します。

sudo mkdir -p ~/.local/bin
sudo chown -R $(whoami) ~/.local

Raw mode is not supportedで止まる

組織のサーバー管理設定にセキュリティ承認が必要な変更が含まれていると、v2.1.246より前のClaude Codeはclaude installの途中で承認ダイアログを出そうとします。curl ... | bashでは標準入力がパイプのため端末として使えず、Raw mode is not supportedを含むエラーで失敗します。v2.1.246以降はclaude installとclaude updateの間はダイアログを出さず、次の対話セッションで出します。ただし、forceRemoteSettingsRefreshを設定するなど、起動時に設定の取得を待つ構成では、v2.1.246以降でもダイアログが出ます。その場合、パイプ経由のインストールは失敗します。

claude updateやclaude doctorが固まる

claude updateとclaude doctorは、古いclaudeのaliasを探すためにシェル設定ファイルを読みます。対象は~/.zshrc(ZDOTDIRを設定していれば$ZDOTDIR/.zshrc)・~/.bashrc・~/.config/fish/config.fishと、macOSでは~/.bash_profile・~/.bash_login・~/.profileのうち最初に存在する1つです。v2.1.214より前は、これらのパスの実体がディレクトリだと両コマンドが固まりました。claude updateはChecking for updatesの表示のあとで止まります。

次のコマンドで、行頭がdの行がディレクトリです。ディレクトリを別名に移すか、v2.1.214以降に更新します。更新ができないので、インストーラーのコマンドを再実行して入れ直します。

ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fish

HomebrewでCask 'claude-code' is unavailableが出る

手元のcask一覧が、claude-codeの公開より古いときに出ます。brew updateで一覧を更新してから、もう一度入れます。インストールされたバージョンが想定より古いときも、同じ原因のことが多く、最新が必要ならclaude-code@latestを入れます。

brew update
brew install --cask claude-code

複数のclaudeが入っているとき

経路を乗り換えたあとに古いバージョンが起動する場合は、claudeが複数の場所に入っています。次のコマンドで一覧にします。

which -a claude
ls -la ~/.local/bin/claude
ls -la ~/.claude/local/
npm -g ls @anthropic-ai/claude-code 2>/dev/null

見る場所は3つです。~/.local/bin/claudeはネイティブインストーラー、~/.claude/local/は古いバージョンが作っていたnpmのローカルインストール、npm -g lsの結果はグローバルのnpm版です。v2.1.289のネイティブインストールでは、which -a claudeが~/.local/bin/claudeの1行だけを返します。

複数見つかったら、1つだけを残して他を削除します。残す1つには、推奨されている~/.local/bin/claudeのネイティブインストールを選びます。乗り換えるときは元の経路をアンインストールしてから、新しい経路で入れ直します。

rm -f ~/.local/bin/claude
rm -rf ~/.local/share/claude

上は、ネイティブインストールを消すコマンドです。Homebrewで入れた場合は、入れたcaskに合わせて次のどちらかを実行します。

brew uninstall --cask claude-code
brew uninstall --cask claude-code@latest

npmで入れた場合と、古いローカルインストールを消す場合は次のとおりです。

npm uninstall -g @anthropic-ai/claude-code
rm -rf ~/.claude/local

まとめ

Macで迷ったら、更新を任せられるネイティブインストーラーが手数の少ない選択です。brewで一元管理するならHomebrew、Node.jsの流れに組み込むならnpmと、更新の持ち主で選べます。インストールで止まったときは、エラー文言の先頭(dyld・TLS・EACCES・command not found)から入口を選ぶと早く切り分けられます。

この記事を共有:XはてブLinkedIn