Bitbake执行do_fetch时哈希值匹配仍校验失败问题咨询
Yocto Bitbake 哈希校验看似匹配仍报错排查方案
- 第一优先级查配方里的哈希值末尾有没有看不见的空白字符
你贴的报错日志里已经露了痕迹:打印出来的预期哈希值末尾,比实际算出来的哈希多了个空格——仔细看文本,实际哈希结尾和后面的when之间只有1个空格,预期哈希结尾和后面的was之间有2个空格。Bitbake做校验的时候不会自动去掉字符串首尾的空格、制表符、零宽空格这类不可见字符,只要你写SRC_URI[sha256sum]赋值的时候末尾带了多余空白,哪怕肉眼看着哈希值完全一样,逐字符对比的时候肯定过不了。
处理的时候别直接复制报错里给的哈希值粘去配方,直接在构建环境里跑sha256sum /cache/downloads/firmware-17.zip拿输出的哈希,手动敲到配方里,写完检查下行尾别留空格,前后别夹看不见的特殊字符。 - 检查多文件校验的对应关系
如果你的配方里同时给好几个下载文件配了校验值,确认firmware-17.zip对应的哈希没和别的文件写串,SRC_URI里写的文件名、版本号要和校验值的索引完全对得上。 - 清理对应文件的下载缓存就行,不用全量干净构建
不用进Docker手动传文件,直接在跑bitbake的构建脚本里加一行rm -f /cache/downloads/firmware-17.zip*,把这个文件对应的旧缓存、.done标记文件全删掉就行,排除之前下载中断留的坏文件、硬链接异常导致的校验误判。 - 排查Jenkins拉取的异常情况
确认你写在SRC_URI里的Jenkins链接是直接拿文件的直链,不会因为没权限、登录过期跳转到HTML报错页。可以在do_fetch阶段加个简单打印,看下下载到的文件头是不是zip格式的PK开头,排除下错文件的可能。
我自己碰到过三次一模一样的报错,全都是复制哈希的时候末尾带了看不见的空格,改完直接就过,不用升源版本,也不用跑全量构建。
内容的提问来源于stack exchange,提问作者Gerrit
相关产品推荐
相关产品推荐

