维护说明(复核于 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 图形窗口 | 使用带 WSLg 的 WSL 2。Microsoft 明确说明 WSL 1 不支持 WSL GUI 应用。 |
| 不开窗口地获取或渲染页面 | 使用 Chrome Headless;基本的 --headless 测试不需要 WSLg。 |
1. 在 PowerShell 中检查 WSL
以下命令在 Windows PowerShell 中运行,不是在 Linux 终端中:
wsl --version
wsl --status
wsl --list --verbose
如果需要显示 Chrome 窗口,发行版应显示为版本 2。Microsoft 目前将 Windows 10 build 19044 或更新版本,或 Windows 11,列为 WSLg 前提。需要时更新 WSL 并重启它的虚拟机:
wsl --update
wsl --shutdown
wsl --shutdown 会停止所有正在运行的 WSL 发行版,请先保存其中的工作。
2. 检查 Linux 发行版和 CPU 架构
在 WSL 中运行:
cat /etc/os-release
dpkg --print-architecture
下文使用的是 amd64 Debian 软件包。只有当架构输出为 amd64,并且发行版使用 Debian 软件包(例如 Ubuntu 或 Debian)时才继续。不要强行把它安装到 arm64、Fedora、openSUSE 或其他不兼容系统上;请改用发行版支持的浏览器包,或直接使用 Windows Chrome。
3. 下载并安装官方软件包
Microsoft WSLg 指南使用 Google 的稳定版软件包地址。在临时目录操作,避免下载文件污染项目:
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
三项检查分别回答:Shell 能否找到启动器、实际运行的浏览器版本,以及 APT 看到的软件包/仓库版本。
5. 通过 WSLg 显示 Chrome
在当前 WSL 2 + WSLg 环境中:
google-chrome
如果没有出现窗口,不要立即安装第三方 X server。先重查 wsl --list --verbose,运行 wsl --update,然后在 PowerShell 执行 wsl --shutdown 并重新启动发行版。遇到 cannot open display 时,下一步应查阅 Microsoft 的 WSLg 排错资料。
6. 验证无头 Chrome
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。现代无头 Chrome 通常不需要旧的 --disable-gpu 规避参数。
自动化安全要点
- 用普通 WSL 用户运行 Chrome。不要把
--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 中可用,不代表它在 WSL 中一定可用;代理、DNS、证书、字体、GPU、文件系统和架构都可能不同。
按症状排错
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
检查发行版是否为 WSL 2,并查看 WSLg 环境变量:
printf 'DISPLAY=%snWAYLAND_DISPLAY=%sn' "$DISPLAY" "$WAYLAND_DISPLAY"
显示环境为空或损坏会影响可见模式,但未必影响无头模式。在编辑 Shell 启动文件或硬编码显示地址前,先诊断 WSLg。
自动化时 Chrome 退出
先捕获 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 命令行参考
软件包地址、Windows build、Chrome 参数和 WSL 要求都可能改变。上述命令与说明复核于 2026-09-01;以后复现时请重新核对官方页面。
