Arch Linux 安装 Lark 校验失败处理
目标
这篇记录一次在 Arch Linux / CachyOS 上安装国际版飞书 Lark 的排查过程。
我当时使用 AUR 包 larksuite-bin 安装 Lark,结果卡在完整性校验:.deb 文件下载完成了,但 b2sums 校验失败。中途还遇到了 CachyOS 仓库签名错误,所以这篇把两个容易混在一起的问题分开记录一下。
最终结论很简单:
larksuite-bin安装失败的核心原因,是 AURPKGBUILD中记录的b2sums与实际下载到的Lark-linux_x64-7.66.10.deb不一致;- 这通常不是
yay坏了,也不是本机缺编译依赖; - 不建议直接
--skipinteg跳过校验; - 更稳妥的做法是清理缓存后重试,仍失败时检查下载文件和
PKGBUILD,再用updpkgsums本地更新校验值后手动构建。
环境
本次问题发生在 Arch 系发行版环境中:
- 系统:CachyOS / Arch Linux 系;
- AUR helper:
yay; - 目标软件:国际版飞书 Lark;
- AUR 包:
larksuite-bin; - 出问题版本:
7.66.10-1。
如果你使用的是 Arch、EndeavourOS、CachyOS 或其它 Arch 系发行版,排查思路基本一致。
现象
安装命令类似:
yay -S larksuite-bin构建过程中可以看到 .deb 文件正常下载,但完整性校验失败:
==> 正在验证 source 文件,使用b2sums...Lark-linux_x64-7.66.10.deb ... 失败LICENSE-20260122.html ... 通过LICENSE-US-20260122.html ... 通过dlagent-lark.sh ... 通过dlagent-license.sh ... 通过dlagent-license-global.sh ... 通过dlagent-license-US.sh ... 通过==> 错误: 一个或多个文件没有通过有效性检查!同时日志里能看到下载的是同一个版本:
AUR Explicit (1): larksuite-bin-7.66.10-1正在下载 Lark-linux_x64-7.66.10.deb...100 417.6M也就是说,包版本看起来没有错,下载也不是完全失败,真正失败的是 PKGBUILD 里记录的校验值和当前文件内容对不上。
根因判断
AUR 包的 PKGBUILD 会写明源码文件地址和校验值,例如 sha256sums、b2sums 等。构建时,makepkg 会先下载文件,再计算本地文件的校验值,与 PKGBUILD 中的值比较。
这次报错说明:
AUR 里的
b2sums记录值,和实际下载到的Lark-linux_x64-7.66.10.deb内容不一致。
常见原因有三种:
- Lark 官方替换了同版本
.deb文件,但 AUR 维护者还没更新校验值; - 本地缓存里的
.deb下载损坏; - 下载源被污染或文件被篡改。
第三种概率不一定高,但不能完全忽略。尤其 larksuite-bin 这种闭源大体积二进制包,不应该看到校验失败就直接跳过。
第一步:清理 yay 缓存后重试
先排除本地缓存损坏。
rm -rf ~/.cache/yay/larksuite-binyay -S larksuite-bin如果清理缓存后安装成功,说明之前大概率是缓存中的下载文件有问题。
如果清理缓存后仍然是同样的 b2sums 校验失败,那么基本可以判断为:
AUR 包里的校验值滞后,或者上游同版本文件内容发生了变化。
这时不要急着 --skipinteg,先检查文件和构建脚本。
第二步:检查下载到的 .deb 文件
进入 AUR 构建目录:
cd ~/.cache/yay/larksuite-bin检查 .deb 是否至少是正常 Debian 包格式:
file Lark-linux_x64-7.66.10.debbsdtar -tf Lark-linux_x64-7.66.10.deb | head正常情况下,bsdtar 应该能列出类似内容:
debian-binarycontrol.tar.*data.tar.*这一步只能做基础格式检查,不能证明文件绝对可信。但它能排除“下载下来的根本不是 deb 包”这种明显异常。
第三步:本地更新 PKGBUILD 校验值
如果确认下载文件格式正常,并且你愿意接受当前上游文件,可以在本地更新校验值后手动构建。
如果系统没有 updpkgsums,先安装:
sudo pacman -S pacman-contrib然后在 AUR 构建目录中执行:
cd ~/.cache/yay/larksuite-binupdpkgsumsupdpkgsums 会重新计算 PKGBUILD 中 source 文件的校验值,并原地更新 PKGBUILD。
更新后一定要看差异:
git diff PKGBUILD正常情况下,应只看到 b2sums=(...) 里对应 .deb 的校验值变化。
如果 source=...、prepare()、package() 等逻辑也出现了陌生改动,就应该停下来,不要继续安装。
确认无异常后再构建安装:
makepkg -si完整命令可以整理成:
cd ~/.cache/yay/larksuite-binupdpkgsumsgit diff PKGBUILDmakepkg -si不推荐:直接跳过完整性检查
不建议这样做:
makepkg -si --skipinteg--skipinteg 会直接跳过完整性校验。对普通文本源码包已经不太优雅,对闭源二进制包更不应该随手这么做。
更稳妥的路线是:
- 清理缓存重新下载;
- 检查
.deb基本格式; - 查看
PKGBUILD是否只有校验值变化; - 使用
updpkgsums更新本地校验值; - 再
makepkg -si构建安装。
插曲:CachyOS 仓库签名错误
排查过程中,我还遇到了另一个问题。当时执行过:
yay -Syu larksuite-bin结果被系统仓库同步挡住:
错误:cachyos-extra-v3: 来自 "CachyOS <admin@cachyos.org>" 的签名无效错误:未能同步所有数据库(未预期的错误)-> 刷新数据库时出错 - exit status 1这个问题和 larksuite-bin 本身不是一回事。
yay -Syu larksuite-bin 会先同步并更新系统,再处理目标包。如果系统仓库签名或 keyring 有问题,安装 Lark 前就会被挡住。
可以按下面顺序处理。
检查系统时间
timedatectl如果时间不对:
sudo timedatectl set-ntp true重新测速 CachyOS 镜像
sudo cachyos-rate-mirrorssudo pacman -Syyu更新 keyring
sudo pacman -Sy archlinux-keyring cachyos-keyringsudo pacman -Syyu最后手段:重置 pacman keyring
如果仍然失败,再考虑重置 keyring:
sudo rm -rf /etc/pacman.d/gnupg/sudo pacman-key --initsudo pacman -Sy archlinux-keyring cachyos-keyringsudo pacman-key --populate archlinux cachyossudo pacman -Syyu注意,这一步影响系统包管理签名信任链,不要一上来就做。只有前面的方法都不行时再考虑。
在我的这次排查里,系统仓库更新恢复正常后,larksuite-bin 仍然报 .deb 校验失败,因此最终问题还是回到了 AUR 包自身的 b2sums 不匹配。
yay -Syu larksuite-bin 和 yay -S larksuite-bin 的区别
这次也顺手理清了一个容易混淆的点。
yay -Syu larksuite-bin这会执行系统同步和升级,因此可能先暴露系统仓库、镜像、keyring 问题。
如果只是想安装 Lark,可以先用:
yay -S larksuite-bin但即使系统仓库正常,larksuite-bin 自己仍可能因为 .deb 校验失败而无法构建。
总结
这次问题可以分成两层:
- CachyOS 仓库签名失败:先处理系统时间、镜像和 keyring;
larksuite-bin校验失败:核心是 AURPKGBUILD中的b2sums和实际.deb内容不一致。
最终推荐路线:
rm -rf ~/.cache/yay/larksuite-binyay -S larksuite-bin如果仍然失败:
cd ~/.cache/yay/larksuite-binsudo pacman -S pacman-contribupdpkgsumsgit diff PKGBUILDmakepkg -si关键检查点是:
git diff PKGBUILD只接受校验值变化,不要无脑跳过完整性检查。
AUR 包出问题时,最容易犯的错是把所有报错都归到一个原因上。实际上这次至少有两件事:系统仓库签名和 AUR source 校验。先把它们拆开,再逐个验证,排查会清楚很多。