当前位置: 首页 > news >正文

Petalinux 23.2 构建过程中常见下载错误及解决方法总结

Petalinux 23.2 构建过程中常见下载错误及解决方法总结

以下是构建过程中因依赖包下载失败而触发的典型错误,及已验证的解决方案。内容基于实际错误日志整理,适用于需要离线构建或网络受限的场景。


1. autoconf-native 下载失败

错误描述

无法从 Xilinx 服务器下载 autoconf-2.72e.tar.gz,触发网络超时。

错误日志片段
ERROR: autoconf-native-2.72e-r0 do_fetch: 
Bitbake Fetcher Error: NetworkAccess('https://petalinux.xilinx.com/.../autoconf-2.72e.tar.gz', ...)
原因分析
  • Xilinx 服务器不可达或网络限制。
  • 本地缓存未配置或文件未正确放置。
解决方案
  1. 手动下载文件
    wget https://ftp.gnu.org/gnu/autoconf/autoconf-2.72e.tar.gz -P /home/dd/pkg/downloads
    
  2. 配置本地缓存优先级
    修改 project-spec/meta-user/conf/petalinuxbsp.conf,添加:
    PREMIRRORS:prepend = "https?://petalinux.xilinx.com/.* file://${DL_DIR}"
    DL_DIR = "/home/dd/pkg/downloads"
    

2. git 仓库快照下载失败(以 pkg-config 为例)

错误描述

Git 仓库(如 git2_gitlab.freedesktop.org.pkg-config.pkg-config.git.tar.gz)无法克隆或生成快照。

错误日志片段
ERROR: pkgconfig-native-0.29.2+git-r0 do_fetch: 
Bitbake Fetcher Error: NetworkAccess('https://petalinux.xilinx.com/.../pkg-config.git.tar.gz', ...)
原因分析
  • 网络克隆 Git 仓库失败。
  • 本地生成的 Git 快照文件名或内容格式不符。
解决方案
  1. 手动生成 Git 快照
    # 克隆为裸仓库并打包
    git clone --mirror https://gitlab.freedesktop.org/pkg-config/pkg-config.git
    tar czvf git2_gitlab.freedesktop.org.pkg-config.pkg-config.git.tar.gz pkg-config.git
    rm -rf pkg-config.git
    mv *.tar.gz /home/dd/pkg/downloads
    
  2. 确保文件名与 URL 匹配
    • 快照文件名需与 Bitbake 请求的 URL 中的哈希路径一致。

3. mpfr-native 下载失败

错误描述

无法从 www.mpfr.org 下载 mpfr-4.2.1.tar.xz

错误日志片段
ERROR: mpfr-native-4.2.1-r0 do_fetch: 
Bitbake Fetcher Error: NetworkAccess('https://www.mpfr.org/.../mpfr-4.2.1.tar.xz', ...)
原因分析
  • 官方服务器下载速度慢或超时。
  • 本地缓存未正确配置。
解决方案
  1. 手动下载并放入缓存目录
    wget https://www.mpfr.org/mpfr-4.2.1/mpfr-4.2.1.tar.xz -P /home/dd/pkg/downloads
    
  2. 调整 PREMIRRORS 规则
    PREMIRRORS:prepend += "https?://.*/mpfr-.* file://${DL_DIR}"
    

4. binutils-cross-arm 的 Git 仓库克隆失败

错误描述

无法从 sourceware.org 克隆 binutils-gdb 仓库。

错误日志片段
ERROR: binutils-cross-arm-2.42-r0 do_fetch: 
Bitbake Fetcher Error: NetworkAccess('git://sourceware.org/git/binutils-gdb.git', ...)
原因分析
  • Git 协议被防火墙拦截(如 git:// 使用非标准端口)。
  • 本地缓存不支持 Git 协议重定向。
解决方案
  1. 直接下载源码包并替换 SRC_URI
    # 下载源码包
    wget https://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.xz -P /home/dd/pkg/downloads# 修改配方(覆盖 Git 仓库请求)
    echo 'SRC_URI:pn-binutils-cross-arm = "file://binutils-2.42.tar.xz"' >> project-spec/meta-user/conf/petalinuxbsp.conf
    

5. pseudo-native Git 快照无效

错误描述

本地 Git 快照无法被识别为有效仓库。

错误日志片段
ERROR: pseudo-native-1.9.0+git-r0 do_fetch: 
Fetcher failure: fatal: not a git repository...
原因分析
  • 快照生成方式错误(未使用 git clone --mirror)。
  • 快照解压后路径不符合预期。
解决方案
  1. 重新生成快照
    git clone --mirror https://git.yoctoproject.org/git/pseudo
    tar czvf git2_git.yoctoproject.org.pseudo.tar.gz pseudo.git
    rm -rf pseudo.git
    mv *.tar.gz /home/dd/pkg/downloads
    

通用配置优化建议

1. 本地缓存管理
  • 关键配置:确保 DL_DIRSSTATE_DIR 指向共享目录:
    DL_DIR = "/home/dd/pkg/downloads"
    SSTATE_DIR = "/home/dd/pkg/sstate-cache"
    
  • 镜像规则:覆盖 Xilinx 和其他常见源:
    PREMIRRORS:prepend = " \https?://.*\.tar\.gz    file://${DL_DIR} \n \git://.*                file://${DL_DIR} \n \
    "
    
2. 网络代理配置(可选)

若需通过代理访问外网:

ENV_HOST_PROXIES = " \http_proxy=http://<proxy_ip>:<proxy_port> \n \https_proxy=http://<proxy_ip>:<proxy_port> \n \
"
3. 缓存验证与清理
  • 检查缓存命中
    cat build/tmp/log/cooker/*/log.do_fetch | grep "Fetched"
    
  • 清理无效缓存
    petalinux-build -c cleansstate <package-name>
    # 全量清理
    petalinux-build -x distclean
    

总结

本文档覆盖了 Petalinux 构建中因依赖下载导致的典型错误,核心解决思路:

  1. 手动下载:优先从替代源(如 GNU 官方)获取依赖包。
  2. 生成 Git 快照:使用 git clone --mirror 生成标准快照文件。
  3. 配置覆盖:通过 PREMIRRORSSRC_URI 强制使用本地缓存。
  4. 日志分析:通过 log.do_fetch 定位具体 URL 和缓存路径问题。

建议将上述配置与操作集成到构建脚本中,以提高离线环境下的构建效率。

http://www.lryc.cn/news/609176.html

相关文章:

  • ORA-12514:TNS: 监听程序当前无法识别连接描述符中请求的服务
  • 小白学OpenCV系列2-理解图像
  • 使用纯Docker命令搭建多服务环境(Linux版)
  • Web 开发 11
  • 腾讯人脸识别
  • lumerical——锥形波导偏振转换
  • 大白话讲解MCP
  • 机器学习第四课之决策树
  • Android 之 蓝牙通信(2.0 经典)
  • Kaggle 竞赛入门指南
  • ELECTRICAL靶机复现练习笔记
  • C++中多线程和互斥锁的基本使用
  • 【数据结构】二叉树的顺序结构实现
  • 15_01_opencv_形态学滤波
  • 35.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--数据缓存
  • Android 之 RxJava2
  • Kali基础知识点【1】
  • 基于图像识别与分类的中国蛇类识别系统
  • gitee使用教程
  • 电路原理图绘制专业实战教程2
  • 生成式人工智能展望报告-欧盟-04-社会影响与挑战
  • Java中手动床架一个线程池
  • [硬件电路-134]:模拟电路 - 运算放大器常见运算:两模拟信号相加、相减、单模拟信号的积分、微分...
  • template<typename R = void> 意义
  • 【Python练习】075. 编写一个函数,实现简单的语音识别功能
  • golang的包和闭包
  • slice() 和 splice()
  • 决策树模型知识点整理:从原理到实战(含可视化与调参)
  • Corrosion2靶机练习笔记
  • 【图像处理基石】如何使用deepseek进行图像质量的分析?