UbuntuでClaude Codeのインストールに失敗する3パターン——権限・証明書・WSLのnpm競合を公式ドキュメントで潰す
Ubuntu/DebianでClaude Codeをインストールする際の権限エラー、TLS/SSL証明書エラー、WSL環境でのnpmインストール競合を公式トラブルシューティングドキュメントベースで解説。Ubuntu Desktop・Server・WSLそれぞれの落とし穴を整理した。
エンジニアのゆとです。
Ubuntu(Desktop・Server・WSL上のUbuntuを含む)にClaude Codeを入れようとして、macOSやWindowsの手順通りにやったのになぜかコケる、という相談をちらほら見かける。原因は大きく3パターンに絞れて、しかもどれも公式ドキュメントに載っている想定内のトラブルだ。この記事ではUbuntu/Debian系ディストリビューションで実際に踏みやすい順に整理した。
低メモリなVPSで出るKilledエラーについては別記事で扱っているので、ここでは触れない。それ以外の「入らない・動かない」系をまとめてある。

パターン1: ディレクトリの権限エラー
インストーラーは~/.local/bin/と~/.claude/への書き込み権限を必要とする。過去に別ユーザーやrootでこれらのディレクトリを作っていたり、共有サーバーで所有者がずれていたりすると、権限エラーでインストールが止まる。
書き込み可能かどうかは以下で確認できる。
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
以前npm経由でインストールしていて、npm特有の権限エラー(グローバルインストール先の/usr/lib/node_modulesなどに対するEACCES)を踏んでいる場合は、そもそもネイティブインストーラーに乗り換えるのが早い。
curl -fsSL https://claude.ai/install.sh | bash
npmのグローバルインストール権限問題は、sudo npm install -gで無理やり突破しようとして余計にディレクトリの所有者を壊す、というのがUbuntu環境での典型的な事故パターンだ。ネイティブインストーラーはユーザーのホームディレクトリ配下で完結するため、この手の権限沼を避けやすい。
パターン2: TLS/SSL証明書エラー
curl: (35) TLS connect errorやunable to get local issuer certificateといったエラーが出る場合、TLSハンドシェイクが失敗している。Ubuntu/Debianでまず疑うべきは、システムのCA証明書が古いか壊れているケースだ。
sudo apt-get update && sudo apt-get install ca-certificates
これで直らない場合、企業ネットワークのプロキシがTLS通信を検査(TLSインスペクション)していて、証明書のチェーンを書き換えている可能性がある。この場合は、インストール時に社内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
証明書ファイルの入手方法が分からない場合は、社内IT部門に問い合わせるのが確実だ。自宅のネットワークなど、プロキシを挟んでいない環境に一時的につないで動作確認すれば、原因がプロキシ側にあるかどうかの切り分けにもなる。
パターン3: WSL上のUbuntuでnpmインストールが競合する
WSL(Windows Subsystem for Linux)上でUbuntuを使っている場合、Windows側とLinux側でNode.js環境が両方存在してしまい、意図しない方を参照して失敗するパターンが多い。これはネイティブインストーラーではなく、npm install -gでインストールした場合に起きやすい。
OS判定がずれる
npmのインストール時にプラットフォーム判定がおかしくなる場合、WSLがWindows側のnpmを拾ってしまっている可能性がある。まずnpm configでOSを明示し、--forceを付けて入れ直す。
npm config set os linux
npm install -g @anthropic-ai/claude-code --force
このときsudoは使わない。sudoを付けると別のユーザー権限でインストールされ、後述のPATH問題や別種の権限エラーの原因になる。
exec: node: not found
claudeを実行したときにこのエラーが出る場合、WSL環境がWindows側にインストールされたNode.jsを参照してしまっている。次のコマンドでどちらを見ているか確認できる。
which npm
which node
パスが/mnt/c/から始まっていればWindows側のバイナリを掴んでいる状態だ。Linux用のディストリビューションのパッケージマネージャ(apt)経由か、nvm経由でNode.jsをWSL内にインストールし直す必要がある。
nvmのバージョンが勝手に切り替わる
WSLとWindows側の両方にnvmを入れていると、WSLはデフォルトでWindowsのPATHをインポートするため、Windows側のnvmが優先されてバージョン切り替えが効かなくなることがある。多くの場合、原因はシェルでnvmがロードされていないことだ。~/.bashrcや~/.zshrcに以下を追記する。
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
それでもWindows側のパスが優先される場合は、Linux側のNodeパスを明示的に先頭へ追加する。
export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"
なお、WSLのWindows PATHインポート自体を無効化する(appendWindowsPath = false)のはおすすめしない。WSLからWindowsの実行ファイルを呼べなくなる副作用があるため、Windows側の開発でNode.jsを使っているなら、そちらをアンインストールするのも避けたほうがいい。
Ubuntu/Debianでripgrepが正しく動いていない場合
インストール自体は成功しても、Searchツールや@fileメンションが正しく機能しない場合は、バンドルされているripgrepバイナリが動いていない可能性がある。システム側のripgrepを別途入れて切り替えることもできる。
sudo apt install ripgrep
インストール後、設定でバンドル版ではなくシステム版を使うよう指定する。
{
"env": {
"USE_BUILTIN_RIPGREP": "0"
}
}
claude doctorを実行し、Searchの行がバンドル版(OK (bundled))ではなく、システム側のripgrepパスを指しているかで切り替えが反映されたか確認できる。
Ubuntu環境を選ぶ前に — VPSかWSLか
自分の開発環境をどこに置くか迷っている場合、格安VPSの低スペックプランはメモリ不足で詰まりやすく、WSLはWindows側とのファイルシステム・PATH競合という別種の面倒がある。VPSでの実運用を検討しているなら、事前にどのくらいのスペックが必要か確認しておいたほうがいい。

WSL経由かWindowsネイティブ版か迷っている場合は、3つの実行方式を比較した記事も参考にしてほしい。

FAQ
sudoを付ければ大抵の権限エラーは回避できるのでは
避けたほうがいい。sudo npm install -gはグローバルディレクトリの所有者をrootに書き換えてしまい、以降のnpm操作全般で権限エラーを誘発する原因になりやすい。ネイティブインストーラーはユーザー権限のまま完結するように設計されているので、権限エラーが出たらsudoを付ける前に、まずディレクトリの所有者を自分のユーザーに揃えることを検討してほしい。
Ubuntu ServerとUbuntu Desktopで手順は変わるか
インストールコマンド自体は同じだ。違うのは、Server版はGUIがなくSSH経由での操作が前提になる分、TLS証明書やプロキシまわりの企業ネットワーク特有の問題に当たりやすいという点くらいになる。
apt経由でClaude Codeを直接インストールできないか
現時点でのネイティブインストーラーはシェルスクリプト経由の配布が基本で、Ubuntu用のaptリポジトリは用意されていない。GUIから入れたい場合は、Claude Code Desktopアプリの方でLinux向けのapt手順が案内されている。
まとめ
Ubuntu特有のトラブルは、突き詰めると「権限」「証明書」「WSL特有のパス競合」の3つに収まることが多い。macOSやWindowsの手順をそのまま持ち込んで詰まった場合は、まずこの3つのどれに当てはまるかを確認すると解決が早い。