当前位置: 首页 > 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.dtcms.com/a/312471.html

相关文章:

  • 【从零开始学习Redis】初识Redis
  • Android 之 常用布局
  • OpenWrt | 如何在 ucode 脚本中打印日志
  • 评测PHOCR中文文本识别模型
  • MySQL半同步复制机制详解:AFTER_SYNC vs AFTER_COMMIT 的优劣与选择
  • Python 程序设计讲义(57):Python 的函数——可变参数的使用
  • 专网内网IP攻击防御:从应急响应到架构加固
  • 老电脑PE下无法读取硬盘的原因
  • 【LeetCode刷题指南】--二叉树的后序遍历,二叉树遍历
  • 7.14.散列表的基本概念(散列表又名哈希表,Hash Table)
  • 01.Redis 概述
  • 嵌入式通信协议解析(基于红外NEC通信协议)
  • 旧笔记本电脑如何安装飞牛OS
  • 前端工程化:npmvite
  • 解剖 .NET 经典:从 Component 到 BackgroundWorker
  • python基础语法6,简单文件操作(简单易上手的python语法教学)(课后习题)
  • Jetpack Compose for XR:构建下一代空间UI的完整指南
  • Hyper-V + Centos stream 9 搭建K8s集群(二)
  • MySQL 索引失效的场景与原因
  • k8s+isulad 国产化技术栈云原生技术栈搭建2-crictl
  • Linux进程启动后,监听端口几分钟后消失之问题分析
  • MySQL 事务原理 + ACID笔记
  • HiveMQ核心架构思维导图2024.9(Community Edition)
  • Educational Codeforces Round 171 (Rated for Div. 2)
  • 06.Redis 配置文件说明
  • 【openlayers框架学习】十一:openlayers实战功能介绍与前端设计
  • Azure DevOps 中的代理
  • Azure DevOps — Kubernetes 上的自托管代理 — 第 4 部分
  • 2025年6月电子学会青少年软件编程(C语言)等级考试试卷(七级)
  • Mongo索引