fix(local-tool): Linux build 支援 webkit2gtk-4.1(Ubuntu 22.10+ / Debian 12+)

使用者在 Linux build 看到:
  pkg-config --cflags ... webkit2gtk-4.0
  Package 'webkit2gtk-4.0' not found

根因:Wails v2.11 預設 cgo pkg-config 指定 webkit2gtk-4.0,但 Ubuntu
22.10 之後的版本已經把系統 package 從 webkit2gtk-4.0 改名為 4.1
(API 大致相容)。使用者 bootstrap 裝的是 libwebkit2gtk-4.1-dev,
pkg-config 找不到 4.0.pc 就 fail。

修法:

1. Makefile wails-linux target 自動偵測 webkit2gtk 版本
   - 優先 pkg-config --exists webkit2gtk-4.1 → wails build -tags webkit2_41
     (Wails v2.10+ 支援的 build tag,切換到 4.1 的 cgo 宣告)
   - 退回 pkg-config --exists webkit2gtk-4.0 → wails build 預設
   - 兩者都沒有 → 清楚錯誤訊息 + 建議安裝指令

2. scripts/bootstrap-linux.sh 裝 webkit2gtk dev package 時也做版本偵測
   - apt-cache show 優先查 4.1,退回 4.0
   - Ubuntu 22.04 及之前 repo 有 4.0;22.10+ / 24.04 repo 只有 4.1
   - 兩個都試過才 err

驗證:
- make -n wails-linux dry-run 正常 parse
- bash -n scripts/bootstrap-linux.sh 語法 OK
- macOS 端 make dmg 仍 work(未改 darwin target)

使用者待做:Linux 端 git pull 拉新版 → 重跑 bootstrap-linux.sh
(確保 webkit2gtk-4.1-dev 安裝)→ make appimage。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
jim800121chen 2026-04-16 04:11:53 +08:00
parent f5655e38b1
commit fbd585ab73
2 changed files with 30 additions and 2 deletions

View File

@ -490,7 +490,23 @@ wails-linux: payload-linux ## ⚠️ 必須在 Linux runner 上執行wails bu
echo ""; \
exit 1; \
fi
cd visiona-local && wails build -platform linux/amd64 -clean
# webkit2gtk-4.0 從 Ubuntu 22.10+ / Debian 12+ 起被 webkit2gtk-4.1 取代。
# 偵測 pkg-config 哪個存在:優先用 4.1(加 -tags webkit2_414.0 則
# 不加 tagWails 預設)。
@if pkg-config --exists webkit2gtk-4.1 2>/dev/null; then \
echo "==> webkit2gtk-4.1 detected → wails build with -tags webkit2_41"; \
cd visiona-local && wails build -platform linux/amd64 -clean -tags webkit2_41; \
elif pkg-config --exists webkit2gtk-4.0 2>/dev/null; then \
echo "==> webkit2gtk-4.0 detected → wails build (default)"; \
cd visiona-local && wails build -platform linux/amd64 -clean; \
else \
echo ""; \
echo "❌ 找不到 webkit2gtk-4.0 或 webkit2gtk-4.1 dev header"; \
echo " 請執行sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev"; \
echo " (舊版 Ubuntu 20.04 可改用 libwebkit2gtk-4.0-dev"; \
echo ""; \
exit 1; \
fi
@du -sh visiona-local/build/bin/visiona-local
# ── 安裝檔打包 ─────────────────────────────────────────────────────

View File

@ -25,10 +25,22 @@ log "[1/5] 安裝系統套件(需要 sudo"
sudo apt update
sudo apt install -y \
git curl ca-certificates build-essential pkg-config \
libgtk-3-dev libwebkit2gtk-4.1-dev \
libgtk-3-dev \
python3 python3-pip python3-venv \
file desktop-file-utils fuse libfuse2
# webkit2gtk優先 4.1Ubuntu 22.10+ / Debian 12+),退回 4.0Ubuntu 20.04 / 22.04)。
# Makefile wails-linux target 會偵測已安裝的版本並自動加 -tags webkit2_41。
if apt-cache show libwebkit2gtk-4.1-dev >/dev/null 2>&1; then
log " → 偵測到 libwebkit2gtk-4.1-dev 可用,安裝中"
sudo apt install -y libwebkit2gtk-4.1-dev
elif apt-cache show libwebkit2gtk-4.0-dev >/dev/null 2>&1; then
log " → 偵測到 libwebkit2gtk-4.0-dev 可用,安裝中"
sudo apt install -y libwebkit2gtk-4.0-dev
else
err "找不到 libwebkit2gtk-4.1-dev 或 libwebkit2gtk-4.0-dev。請手動安裝對應的 webkit2gtk dev packageUbuntu: sudo apt install libwebkit2gtk-4.1-dev"
fi
log "[2/5] 安裝 Go $GO_VERSION"
if ! command -v go >/dev/null || [[ "$(go version 2>/dev/null)" != *"go$GO_VERSION"* ]]; then
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tar.gz