維持ガイド(2026-09-01確認): 本稿は、Ubuntu または Debian 系 WSL ディストリビューションの内部に Linux 版 Google Chrome を導入する手順です。Microsoft の WSLg ガイドも現在このパッケージを直接案内しています。GUI、ヘッドレス自動化、CPU アーキテクチャ、セキュリティを別々に判定します。
Table of Contents
まず必要な 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 --verbose、wsl --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-dom は curl と異なり、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-architecture が amd64 でなければ停止します。依存修復で互換性のないバイナリをネイティブ化はできません。
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
実行を確定する前に、削除対象のパッケージ一覧を確認します。
公式資料
- Microsoft Learn:WSL で Linux GUI アプリを実行(Google Chrome 導入を含む)
- Microsoft Learn:WSL 基本コマンド
- Chrome for Developers:Headless コマンドラインリファレンス
パッケージ URL、Windows build、Chrome フラグ、WSL 要件は変わります。上記は 2026-09-01 に再確認しました。後日再現するときは公式ページを再度確認してください。
