Yocto集成linphone mediastreamer2时fetcher下载失败该如何解决?
问题产生原因
- BitBake的Git Fetcher存在默认协议转换逻辑:当你在
SRC_URI中直接填写HTTPS格式的Git仓库地址时,BitBake会默认将协议替换为git://(Git原生传输协议,端口9418)发起拉取请求。 - 目前Linphone官方的公开代码仓库已经关闭了Git原生协议的匿名访问权限,仅支持HTTPS协议拉取公开代码,因此BitBake用默认转换后的
git://地址请求时就会触发访问拒绝报错,你可以看到报错日志中实际尝试拉取的地址和你手动执行的HTTPS地址不一致。
解决方法
修改你的mediastreamer2的bb文件中SRC_URI配置项,明确指定Git拉取使用HTTPS协议,同时补充分支参数,修改后的完整配置如下:
require mediastreamer2.inc inherit gitpkgv PR = "${INC_PR}.0" SRCREV = "eb2af04948a1a0e0f3384f0e46c3513b0aa51e95" # 修正SRC_URI配置,明确指定git仓库类型、https协议、对应分支 SRC_URI = "git://gitlab.linphone.org/BC/public/mediastreamer2.git;protocol=https;branch=master" PV = "git_${SRCREV}" PKGV = "${GITPKGVTAG}" LIC_FILES_CHKSUM = "file://COPYING;md5=c46082167a314d785d012a244748d803"
修改完成后执行以下命令清理之前的失败缓存,重新构建即可:
bitbake mediastreamer2 -c cleanall bitbake mediastreamer2
如果修改后仍然拉取失败,可以排查以下两项:
- 检查构建环境的Git全局配置是否设置了无效代理,或者Yocto配置中开启了
BB_NO_NETWORK参数禁止网络访问 - 确认你填写的
SRCREV对应commit确实存在于官方mediastreamer2仓库的master分支中
内容的提问来源于stack exchange,提问作者user16199289
相关产品推荐
相关产品推荐

