WSL 2 に Google Chrome を導入する:WSLg、ヘッドレステスト、トラブルシューティング

維持ガイド(2026-09-01確認): 本稿は、Ubuntu または Debian 系 WSL ディストリビューションの内部に Linux 版 Google Chrome を導入する手順です。Microsoft の WSLg ガイドも現在このパッケージを直接案内しています。GUI、ヘッドレス自動化、CPU アーキテクチャ、セキュリティを別々に判定します。

まず必要な Chrome を決める

目的最初の選択
Windows 上で普通に閲覧するWindows 版 Chrome を使います。Linux 版を二重に入れる必要がない場合があります。
Linux Chrome のバイナリ、フォント、ライブラリを検証する本稿に従って WSL 内へ導入します。
Playwright、Selenium、Puppeteer を使うまずツール自身が導入・サポートするブラウザを使い、プロジェクトがシステム Chrome を要求するときだけ導入します。
Linux GUI ウィンドウを表示するWSLg 付き WSL 2 を使います。Microsoft は WSL 1 で WSL GUI アプリは動かないと明記しています。
ウィンドウなしで取得・描画するChrome Headless を使います。基本的な --headless テストに WSLg は不要です。

1. PowerShell から WSL を確認する

次は Linux 内ではなく Windows PowerShell で実行します。

wsl --version
wsl --status
wsl --list --verbose

可視ウィンドウが必要な場合、ディストリビューションはバージョン 2 である必要があります。Microsoft は現在、Windows 10 build 19044 以上または Windows 11 を WSLg の前提としています。必要なら更新して WSL VM を再起動します。

wsl --update
wsl --shutdown

wsl --shutdown は実行中のすべての WSL ディストリビューションを停止するため、先に作業を保存します。

2. Linux ディストリビューションと CPU アーキテクチャを確認する

WSL 内で実行します。

cat /etc/os-release
dpkg --print-architecture

以下は amd64 向け Debian パッケージです。出力が amd64 で、Ubuntu や Debian のように Debian パッケージを使う場合のみ続行します。arm64、Fedora、openSUSE などへ無理に導入せず、各ディストリビューションがサポートするブラウザか Windows Chrome を使います。

3. 公式パッケージを取得・導入する

Microsoft WSLg ガイドが示す Google の安定版 URL を使います。プロジェクトを汚さないよう一時ディレクトリで作業します。

cd /tmp
sudo apt update
sudo apt install --yes wget
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install --fix-broken ./google-chrome-stable_current_amd64.deb

apt にローカルの ./package.deb を渡すと、依存関係も同じ操作で解決できます。古い dpkg -i の後に apt install -f を行う方法も動くことはありますが、一時的に不完全な依存状態を作るためここでは不要です。

4. インストールを検証する

command -v google-chrome
google-chrome --version
apt-cache policy google-chrome-stable

それぞれ、シェルが起動コマンドを見つけるか、実際のバージョン、APT が認識するパッケージ/リポジトリバージョンを確認します。

5. WSLg で可視 Chrome を起動する

google-chrome

ウィンドウが出ないときは、すぐに外部 X サーバーを入れません。wsl --list --verbosewsl --update、PowerShell 側の wsl --shutdown を順に確認し、ディストリビューションを再起動します。cannot open display では Microsoft の WSLg 診断が次の参照先です。

6. Headless Chrome を検証する

google-chrome --headless --dump-dom https://example.com

スクリーンショットや PDF も作れます。

google-chrome --headless --screenshot --window-size=1280,720 https://example.com
google-chrome --headless --print-to-pdf https://example.com

--dump-domcurl と異なり、Chrome がページを解析し、スクリプトを実行した後の DOM を直列化します。現行 Headless Chrome は通常、古い --disable-gpu 回避策を必要としません。

安全な自動化の要点

  • 通常の WSL ユーザーで実行し、--no-sandbox を一般的な修正に使いません。重要なセキュリティ境界を失います。
  • 日常プロファイルではなく一時プロファイルを使います。

```bash
chrome_wsl_profile="$(mktemp -d)"
google-chrome --headless --user-data-dir="$chrome_wsl_profile" --dump-dom https://example.com
```

  • リモートデバッグポートを 0.0.0.0 や信頼できないネットワークへ開きません。ブラウザ操作やプロファイル内データの読み取りが可能です。
  • Windows Chrome で動くページも、代理、DNS、証明書、フォント、GPU、ファイルシステム、アーキテクチャが異なる WSL では別の結果になり得ます。

症状別の診断

Unable to locate package または依存エラー

ls -lh /tmp/google-chrome-stable_current_amd64.deb
sudo apt update
sudo apt install --fix-broken /tmp/google-chrome-stable_current_amd64.deb

dpkg --print-architectureamd64 でなければ停止します。依存修復で互換性のないバイナリをネイティブ化はできません。

cannot open display

printf 'DISPLAY=%snWAYLAND_DISPLAY=%sn' "$DISPLAY" "$WAYLAND_DISPLAY"

WSL 2 かを確認し、表示変数を調べます。表示環境の問題は可視モードに影響しますが、Headless は動く場合があります。シェル設定にアドレスを直書きする前に WSLg を診断します。

自動化中に Chrome が終了する

google-chrome --headless --enable-logging=stderr --v=1 --dump-dom https://example.com

ネットワークも分けて調べます。

curl -I https://example.com

--no-sandbox を診断にせず、終了メッセージ、Chrome、WSL、ディストリビューション、アーキテクチャ、自動化ライブラリの各バージョンを先に記録します。

Chrome を更新または削除する

sudo apt update
sudo apt install --only-upgrade google-chrome-stable

Linux パッケージだけを削除し、Windows Chrome は残す場合:

sudo apt remove google-chrome-stable

実行を確定する前に、削除対象のパッケージ一覧を確認します。

公式資料

パッケージ URL、Windows build、Chrome フラグ、WSL 要件は変わります。上記は 2026-09-01 に再確認しました。後日再現するときは公式ページを再度確認してください。

Leave a Reply