Fedora上运行Wails构建出现libwebkit缺失问题
现在 Wails 2.x 版本在 Fedora 上 build 构建可能会有 libwebkit 库缺失的问题:
→ wails build
# Building target: linux/amd64
• Generating bindings: Done.
• Installing frontend dependencies: Done.
• Compiling frontend: Done.
• Compiling application: # github.com/wailsapp/wails/v2/internal/frontend/desktop/linux
# [pkg-config --cflags -- gtk+-3.0 webkit2gtk-4.0 gtk+-3.0 webkit2gtk-4.0 gtk+-3.0 webkit2gtk-4.0 gtk+-3.0 gtk+-3.0 webkit2gtk-4.0 gtk+-3.0 webkit2gtk-4.0 gtk+-3.0 webkit2gtk-4.0 webkit2gtk-4.0 gtk+-3.0 webkit2gtk-4.0]
Package webkit2gtk-4.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `webkit2gtk-4.0.pc'
to the PKG_CONFIG_PATH environment variable
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
Package 'webkit2gtk-4.0' not found
ERROR exit status 1
ERROR exit status 1
♥ If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthony一般出现这种情况有两种:① 真的缺失 libwebkit 依赖,无法根据对依赖执行构建。② Wails build 依赖识别出问题。
缺失 libwebkit 依赖
如果是缺失依赖的话,我们只需要执行相应的 dnf 指令安装对应依赖就好了:
# 安装依赖(包括Wails相关构建依赖)
sudo dnf install gcc pkg-config gtk3-devel webkit2gtk4.0-devel
# 验证依赖版本
pkg-config --modversion webkit2gtk-4.0部分 Fedora 版本可能会有所不同,比如相关魔改版或者像 Fedora 43 这样的新版本,webkit2gtk4.0 可能已经从 dnf 中移除,需要使用 webkit2gtk4.1 代替:
# 安装依赖(包括Wails相关构建依赖)
sudo dnf install gcc pkg-config gtk3-devel webkit2gtk4.1-devel
# 验证依赖版本
pkg-config --modversion webkit2gtk-4.1如果系统版本没有 webkit2gtk-4.0 的话,那大概率即便你装了依赖也会遇到问题②或者额外的问题,请继续往下看。Wails build 依赖识别问题
在 build 前我们可以用 wails doctor 看一下依赖是否齐全,如果像我(Fedora 43)这样即便安装了 webkit2gtk-4.1 也提示查找不到 libwebkit,就说明 Wails 2.x 版本的依赖识别也发生在了你的机器上。
→ wails doctor
Wails Doctor
# Wails
Version | v2.12.0
Package Manager | dnf
# System
┌──────────────────────────────────────────────────────────┐
| OS | Fedora Linux |
| Version | 43 |
| ID | fedora |
| Branding | |
| Go Version | go1.26.1 |
| Platform | linux |
| Architecture | amd64 |
| CPU 1 | 13th Gen Intel(R) Core(TM) i9-13900HX |
| CPU 2 | 13th Gen Intel(R) Core(TM) i9-13900HX |
| CPU 3 | 13th Gen Intel(R) Core(TM) i9-13900HX |
| CPU 4 | 13th Gen Intel(R) Core(TM) i9-13900HX |
| GPU | SVGA II Adapter (VMware) - Driver: vmwgfx |
| Memory | 8GB |
└──────────────────────────────────────────────────────────┘
# Dependencies
┌───────────────────────────────────────────────────────┐
| Dependency | Package Name | Status | Version |
| *docker | moby-engine | Installed | 29.3.0 |
| gcc | gcc-c++ | Installed | 15.2.1 |
| libgtk-3 | gtk3-devel | Installed | 3.24.52 |
| libwebkit | Unknown | Not Found | |
| npm | nodejs-npm | Installed | 10.9.4 |
| pkg-config | pkgconf-pkg-config | Installed | 2.3.0 |
| *upx | upx | Installed | 5.1.1 |
| |
└─────────────── * - Optional Dependency ───────────────┘
# Diagnosis
WARNING Your system has missing dependencies!
Fatal:
Required dependencies missing: libwebkit
♥ If Wails is useful to you or your company, please consider sponsoring the project:
https://github.com/sponsors/leaanthonyWails 会识别不出来相关 webkit2_41 相关的内容,其他用户使用 webkit2_40 就能够识别出来,具体是 Wails 为了适配多个 Linux 发行版导致的问题,官方只会检测 webkit2_40,因为这个 webkit 版本大部分发行版都有,只有少数像 Fedora 43 比较新的发行版会移除引入 webkit2_41 导致提示依赖缺失。
如果是这样的问题,会有两个方法:
每次运行
wails build的时候,都在后面加上-tags标明好webkit的版本号,供给 Wails 构建识别。wails build -tags webkit2_41- 给
webkit2_41的目录加上名为webkit2_40的软链接目录,这样 Wails 构建识别就能够识别到软链接目录,从而被欺骗导向使用webkit2_41,直接运行wails build不再报错,wails doctor检测libwebkit也可以正常检测到。
额外
Ubuntu 开发 Wails 的话可能也会遇到相关问题,Ubuntu 可能会有即便装上了 webkit4_20 也提示识别不到的问题,具体的话就看下面的 官方相关Issue① 吧,里面有人已经提出了对应的解决方法。
Fedora 开发也可能遇到 官方相关Issue② 里面遇到的问题,即便没有安装对应的依赖,wails docotr 也提示安装了对应 webkit 依赖,这个就是官方使用的检测命令误导用户导致的。
官方 doctor 用的是 dnf info installed webkit2gtk4.0-devel 和 dnf info installed webkit2gtk3-devel 进行检测,如果其中任何一个返回带有 Version 文本的输出,则 doctor 会认为用户已安装运行所需要的依赖。造成这个问题也是因为 Fedora 命令更新过导致的问题:
Fedora 41+ 切换到 DNF5,命令语法发生破坏性变更:
DNF4: dnf list installed <pkg> 或 dnf info installed <pkg>(单横线)
DNF5: dnf list --installed <pkg>(必须双横线)dnf info installed webkit2gtk3-devel 这种旧语法,DNF5 会将已经安装的依赖和仓库依赖一并输出:
dnf info installed webkit2gtk4.1-devel
仓库更新和加载中:
仓库加载完成。
已安装的软件包 ⬅️ 如果是没安装的话,已安装这一串是不会有的
Name : webkit2gtk4.1-devel
Epoch : 0
Version : 2.50.5
Release : 1.fc43
Architecture : x86_64
Installed size : 5.3 MiB
Source : webkitgtk-2.50.5-1.fc43.src.rpm
From repository : updates
Summary : Development files for webkit2gtk4.1
URL : https://www.webkitgtk.org/
License : LGPL-2.1-only AND BSD-2-Clause AND BSD-3-Clause AND ISC AND bzip2-1.0.6 AND NCS
: A AND MIT AND GPL-2.0-only AND MPL-1.1 AND SunPro AND Unicode-TOU AND Apache-2.
: 0 AND GPL-3.0-or-later WITH Bison-exception-2.2 AND GPL-3.0-only WITH Autoconf-
: exception-3.0 AND MPL-2.0 AND OFL-1.1 AND (AFL-2.0 OR GPL-2.0-or-later) AND BSD
: -Source-Code AND BSD-2-Clause-Views AND LGPL-2.1-or-later AND (NCSA OR MIT) AND
: Apache-2.0 WITH LLVM-exception AND ICU AND BSL-1.0
Description : The webkit2gtk4.1-devel package contains libraries, build data, and header
: files for developing applications that use webkit2gtk4.1.
Vendor : Fedora Project
可安装的软件包
Name : webkit2gtk4.1-devel
Epoch : 0
Version : 2.50.5
Release : 1.fc43
Architecture : i686
Download size : 364.6 KiB
Installed size : 5.3 MiB
Source : webkitgtk-2.50.5-1.fc43.src.rpm
Repository : updates
Summary : Development files for webkit2gtk4.1
URL : https://www.webkitgtk.org/
License : LGPL-2.1-only AND BSD-2-Clause AND BSD-3-Clause AND ISC AND bzip2-1.0.6 AND NCSA
: AND MIT AND GPL-2.0-only AND MPL-1.1 AND SunPro AND Unicode-TOU AND Apache-2.0
: AND GPL-3.0-or-later WITH Bison-exception-2.2 AND GPL-3.0-only WITH Autoconf-exc
: eption-3.0 AND MPL-2.0 AND OFL-1.1 AND (AFL-2.0 OR GPL-2.0-or-later) AND BSD-Sou
: rce-Code AND BSD-2-Clause-Views AND LGPL-2.1-or-later AND (NCSA OR MIT) AND Apac
: he-2.0 WITH LLVM-exception AND ICU AND BSL-1.0
Description : The webkit2gtk4.1-devel package contains libraries, build data, and header
: files for developing applications that use webkit2gtk4.1.
Vendor : Fedora Projectdoctor 因此会错误地将仓库中的可用版本(Available Version)识别为已安装版本,导致误认为用户安装了对应的依赖。
总结
这一篇文章主要就是将自己在 Fedora 上开发 Wails App 遇到的小问题记录分享出来。官方已经将相关问题提上 Wails 3 版本的 bug list 了,相关 -tags 貌似也写进了 Wails docs 里(虽然有点难找到),具体修复得在 Wails 3 才能感受到了。
本文问题相关的网址:官方相关Issue① 、官方相关Issue②
RoLingG | 博客
评论(0)