Ubuntu14执行repo sync同步Yocto Poky时gnutls_handshake握手失败
Ubuntu14环境repo sync握手失败解决方案
报错核心原因:Ubuntu 14.04 自带的Git、GnuTLS库版本过低,无法兼容git.yoctoproject.org当前启用的TLS 1.2及以上加密协议,常规CA证书更新无法解决协议不兼容问题。
可行解决方案
方案1:升级Git并切换为OpenSSL后端(推荐)
- 添加Git官方PPA源安装高版本Git:
sudo add-apt-repository ppa:git-core/ppa sudo apt-get update && sudo apt-get install -y git - 重新编译Git替换GnuTLS为OpenSSL:
编译完成后重试sudo apt-get install -y build-essential fakeroot dpkg-dev libcurl4-openssl-dev sudo apt-get build-dep git mkdir ~/git-build && cd ~/git-build apt-get source git cd git-*/ sed -i 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control sudo dpkg-buildpackage -b -uc -us cd .. && sudo dpkg -i git_*.debrepo sync即可正常同步。
方案2:修改Manifest替换HTTPS为HTTP(临时方案)
直接修改.repo/manifests目录下的对应配置XML文件,将所有https://git.yoctoproject.org前缀的链接替换为http://git.yoctoproject.org,跳过TLS校验。该方案仅适用于内部可信网络环境,存在代码被篡改的风险。
方案3:跨环境同步后迁移目录
利用已验证的Ubuntu20环境可正常同步的特点,先在Ubuntu20环境完成全量repo sync,再通过rsync -a命令将整个Yocto工作目录完整拷贝到Ubuntu14环境执行后续构建,拷贝时需保留文件权限与软链接属性。
补充说明
如果后续想要修复Ubuntu20环境的构建失败问题,通常是因为imx-linux-zeus分支对主机Python版本、依赖包版本的要求与Ubuntu20默认携带的版本不匹配,可通过将系统默认Python切换为2.7版本、安装对应旧版依赖包解决,优先级低于先完成当前Ubuntu14环境的同步操作。
内容的提问来源于stack exchange,提问作者MamaShark
相关产品推荐
相关产品推荐

