OpenAI Codex (WSL2/Ubuntu) トラブルシュート記録
日付: 2026-05-07
環境: Windows 10 / WSL2 Ubuntu / Node.js v24.12.0 (nvm管理)
症状
WSL2 Ubuntu のターミナルで codex を実行すると以下のエラーが発生。
Error: Missing optional dependency @openai/codex-linux-x64.
Reinstall Codex: npm install -g @openai/codex@latest
at file:///mnt/c/Users/{username}/AppData/Roaming/npm/node_modules/@openai/codex/bin/codex.js:100:11
調査
コマンドの所在確認
which codex
# → /mnt/c/Users/{username}/AppData/Roaming/npm/codex (当初はWindows側)
type -a codex
# → codex is /mnt/c/Users/{username}/AppData/Roaming/npm/codex
which npm
# → /home/c2kp/.nvm/versions/node/v24.12.0/bin/npm (Linux側)
which node
# → /home/c2kp/.nvm/versions/node/v24.12.0/bin/node (Linux側)
判明した構造
| ツール | インストール場所 | WSLから動作 |
|---|---|---|
claude | Windows側 npm | ✅ 動作 |
gemini | Windows側 npm | ✅ 動作 |
codex | Windows側 npm のみ | ❌ エラー |
原因分析
なぜ claude / gemini は動くのか
これらは純粋な JavaScript のみで実装されており、プラットフォーム固有のネイティブバイナリに依存しない。
そのため Windows 側でインストールされていても WSL から /mnt/c/... 経由で問題なく実行できる。
なぜ codex だけ失敗するのか
@openai/codex は内部でプラットフォーム固有のネイティブバイナリを optionalDependencies として要求する。
| インストール環境 | インストールされるネイティブバイナリ |
|---|---|
Windows で npm install | @openai/codex-win32-x64 |
Linux で npm install | @openai/codex-linux-x64 |
Windows 側でインストールされた codex は @openai/codex-win32-x64 しか持っていないため、
WSL (Linux) から呼び出すと Linux 用バイナリが見つからずエラーになる。
解決手順
Step 1: WSL Linux 側に codex をインストール
npm install -g @openai/codex@latest
nvm 管理下の npm を使っているため、Linux 側の bin に配置される:/home/c2kp/.nvm/versions/node/v24.12.0/bin/codex
Step 2: シェルのハッシュキャッシュをクリア
インストール後も codex コマンドが Windows 側を参照し続けた。
原因はシェルが古いキャッシュ(Windows 側のパス)を保持していたため。
hash -r
Step 3: 動作確認
type -a codex
# codex is /home/c2kp/.nvm/versions/node/v24.12.0/bin/codex ← Linux側(先頭)
# codex is /mnt/c/Users/{username}/AppData/Roaming/npm/codex ← Windows側(後)
codex
# → OpenAI Codex (v0.128.0) が起動、model: gpt-5.5
Linux 側が type -a の先頭に来ることで、シェルは自動的に Linux 側を優先して実行する。
補足:bubblewrap の警告
起動時に以下の警告が表示される場合がある:
⚠ Codex could not find bubblewrap on PATH.
Install bubblewrap with your OS package manager.
サンドボックス機能を有効にするには:
sudo apt install bubblewrap
必須ではないが、セキュリティ面で推奨。
結論
- Windows 側と Linux 側の codex は共存可能
- WSL では
$PATHの順序で優先される側が決まる(nvm の bin が先頭なら Linux 側が優先) hash -rはインストール後にコマンドの参照先がおかしい場合の定番対処claude/geminiは純粋 JS のため Windows 側でも WSL から動作するが、codexはネイティブバイナリ依存のため Linux 側へのインストールが必須