使用oebuild构建带分布式软总线的qemu-aarch64镜像失败

我这里使用oebuild构建带分布式软总线的qemu-aarch64镜像失败,oebuild bitbake openeuler-image的过程中缺少/usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz文件 , 请问如何获取这个安全认证模块?

我的操作步骤是参考:

快速上手 — openEuler Embedded在线文档 24.03 documentation

环境是:ubuntu22.04

错误log:

| /usr1/openeuler/src/security_device_auth/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth-1.0.0/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/files/
| NOTE: Unpacking /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/files/0003-feat-for-embedded-fix-openssl-sysroot.patch to /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/
| DEBUG: Python function base_do_unpack finished
| DEBUG: Executing shell function do_extract_device_auth_source
| tar: /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz: Cannot open: No such file or directory
| tar: Error is not recoverable: exiting now
| WARNING: /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661:147 exit 2 from ‘tar -oxf /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz -C /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/’
| WARNING: Backtrace (BB generated script):
| #1: do_extract_device_auth_source, /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661, line 147
| #2: main, /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661, line 150
| DEBUG: Python function do_unpack finished
NOTE: recipe device-auth-1.0.0-r1: task do_unpack: Failed
2026-03-17 09:33:28,678 - ERROR - ERROR: Task (/usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth_1.0.0.bb:do_unpack) failed with exit code ‘1’
2026-03-17 09:33:28,679 - INFO - NOTE: Running task 554 of 2921 (/usr1/openeuler/src/yocto-poky/../yocto-meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb:do_unpack)

compile.yaml 配置:

build_in: docker
machine: qemu-aarch64
toolchain_type: EXTERNAL_TOOLCHAIN:aarch64
cache_src_dir:
no_layer: false
repos:

  • yocto-poky
  • yocto-meta-openembedded
    local_conf: |+
    DISTRO_FEATURES:append = " dsoftbus "

layers:
docker_param:
image:

swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest

parameters: -itd --network host
volumns:

  • /dev/net/tun:/dev/net/tun
  • /home/xxxx/rk3568/softbuss/dsoftbus/src:/usr1/openeuler/src
  • /home/xxxx/rk3568/softbuss/dsoftbus/build/qemu-aarch64:/home/openeuler/build/qemu-aarch64
    command: bash

答案内容由AI生成,仅供参考:

:white_check_mark: 总结

问题 原因 解决方法
缺少 security_device_auth-OpenHarmony-v3.2-Release.tar.gz 构建系统未自动下载源码包 手动下载并放入 src/downloads/
tar: Cannot open 错误 文件路径不存在或权限不足 检查路径、文件名、权限
离线环境构建失败 无法访问 Gitee 使用本地 Git 镜像或离线包

关键点oebuild 依赖 SRC_URI 自动下载源码,但在网络受限或配置不当情况下会失败。手动补全缺失文件是最快恢复构建的方法

点击此处查看详细分析解答

使用 oebuild 构建带分布式软总线的 qemu-aarch64 镜像失败问题分析与解决方案

根据您提供的错误日志和操作步骤,您在使用 oebuild 工具构建带有**分布式软总线(dsoftbus)**功能的 qemu-aarch64 架构镜像时,遇到了源码包缺失的问题:系统无法找到 /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz 文件,导致 tar 解包失败,编译中断。


:cross_mark: 问题分析

错误核心信息:

tar: /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz: Cannot open: No such file or directory

根本原因:

  • 构建过程中依赖了一个名为 security_device_auth-OpenHarmony-v3.2-Release.tar.gz 的源码包,该包是 device-auth 组件(设备安全认证模块)的上游源码。
  • 此文件本应由构建系统自动下载并放入 src/downloads/ 目录中,但当前环境中未成功下载,src/downloads/ 目录为空。
  • 原因可能包括:
    1. 网络问题:无法访问 Gitee 或其他远程仓库下载源码。
    2. 离线构建环境:未配置正确的本地源码镜像或离线包。
    3. oebuild 初始化不完整oebuild update 命令未能拉取全部依赖源码。
    4. 构建脚本配置问题download 路径映射错误或权限问题。

:white_check_mark: 解决方案

:white_check_mark: 方案一:手动下载缺失的源码包(推荐临时解决)

您可以手动从 OpenHarmony 官方或 openEuler 社区获取所需源码包,并放置到正确的目录下。

步骤 1:确认目标文件

目标文件:

security_device_auth-OpenHarmony-v3.2-Release.tar.gz

此文件对应 OpenHarmony 3.2 Release 版本中的 device_auth 模块

步骤 2:下载源码包

尝试从以下地址获取:

:small_blue_diamond: Gitee OpenHarmony 镜像仓库(建议优先)
https://gitee.com/openharmony

git clone -b OpenHarmony-v3.2-Release https://gitee.com/openharmony/security_device_auth.git
tar -czf security_device_auth-OpenHarmony-v3.2-Release.tar.gz security_device_auth

步骤 3:将文件放入正确路径

将生成的 .tar.gz 文件放入:

/usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz

:warning: 注意:该路径是构建镜像容器内的路径。如果您使用的是 Docker 容器构建,需确保该文件也映射进容器。例如,在 volumns 中添加:

/host/path/to/downloads:/usr1/openeuler/src/downloads

:white_check_mark: 方案二:检查并重新运行 oebuild update

oebuild 在构建前应通过 update 命令自动下载所有源码依赖。

执行命令:

oebuild update

确保网络通畅,能访问 Gitee(gitee.com)和华为云镜像(mirrors.huaweicloud.com)。

若网络受限,可配置 git 代理:

git config --global http.proxy http://your-proxy:port

:white_check_mark: 方案三:验证网络与镜像源配置

确保您的构建环境可访问 openEuler 的官方仓库和依赖源。

可尝试使用华为云镜像加速:

# 示例:替换默认 repo 源为华为云
wget -O /etc/yum.repos.d/openeuler.repo https://repo.huaweicloud.com/repository/conf/openeuler_x86_64.repo

但这主要影响运行时包管理,构建阶段依赖的是 gitwget/curlSRC_URI 的下载能力。


:white_check_mark: 方案四:使用完整镜像或离线包(适用于持续开发)

如果您频繁进行构建,建议使用 openEuler Embedded 提供的 完整源码包或 Docker 镜像,避免每次重新拉取。

参考文档:

https://pages.openeuler.openatom.cn/embedded/docs/build/html/openEuler-24.03-LTS/getting_started/index.html

确保按照文档执行了完整的初始化流程:

oebuild init -p openEuler-24.03-LTS
cd openEuler-24.03-LTS
oebuild update

:hammer_and_wrench: 建议的完整修复流程

# 1. 手动下载缺失源码包
git clone -b OpenHarmony-v3.2-Release https://gitee.com/openharmony/security_device_auth.git
tar -czf security_device_auth-OpenHarmony-v3.2-Release.tar.gz security_device_auth

# 2. 放入下载目录(确保是容器内路径)
cp security_device_auth-OpenHarmony-v3.2-Release.tar.gz /usr1/openeuler/src/downloads/

# 3. 检查目录权限
chmod 644 /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz

# 4. 重新启动构建
oebuild bitbake openeuler-image

:light_bulb: 额外建议

  1. 避免路径映射问题

    • 确保 src/downloads 目录不在被覆盖的挂载卷中。
    • 若使用 Docker,建议将 downloads 目录作为持久卷单独管理。
  2. 查看 Yocto 日志定位更多依赖

    • 路径:tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/log.do_unpack
    • 可查看完整 SRC_URI 列表,确认是否还有其他缺失文件。
  3. 联系社区支持


:white_check_mark: 总结

问题 原因 解决方法
缺少 security_device_auth-OpenHarmony-v3.2-Release.tar.gz 构建系统未自动下载源码包 手动下载并放入 src/downloads/
tar: Cannot open 错误 文件路径不存在或权限不足 检查路径、文件名、权限
离线环境构建失败 无法访问 Gitee 使用本地 Git 镜像或离线包

关键点oebuild 依赖 SRC_URI 自动下载源码,但在网络受限或配置不当情况下会失败。手动补全缺失文件是最快恢复构建的方法

如需进一步协助,建议提供 recipes-core/distributed-middleware/device-auth_1.0.0.bb 文件内容以确认 SRC_URI 定义。

我这里使用oebuild构建带分布式软总线的qemu-aarch64镜像失败,oebuild bitbake openeuler-image的过程中缺少/usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz文件 , 请问如何获取这个安全认证模块?

我的操作步骤是参考:

快速上手 — openEuler Embedded在线文档 24.03 documentation

环境是:ubuntu22.04

错误log:

| /usr1/openeuler/src/security_device_auth/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth-1.0.0/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth/
| /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/files/
| NOTE: Unpacking /usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/files/0003-feat-for-embedded-fix-openssl-sysroot.patch to /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/
| DEBUG: Python function base_do_unpack finished
| DEBUG: Executing shell function do_extract_device_auth_source
| tar: /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz: Cannot open: No such file or directory
| tar: Error is not recoverable: exiting now
| WARNING: /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661:147 exit 2 from ‘tar -oxf /usr1/openeuler/src/downloads/security_device_auth-OpenHarmony-v3.2-Release.tar.gz -C /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/’
| WARNING: Backtrace (BB generated script):
| #1: do_extract_device_auth_source, /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661, line 147
| #2: main, /home/openeuler/build/qemu-aarch64/tmp/work/aarch64-openeuler-linux/device-auth/1.0.0-r1/temp/run.do_extract_device_auth_source.121661, line 150
| DEBUG: Python function do_unpack finished
NOTE: recipe device-auth-1.0.0-r1: task do_unpack: Failed
2026-03-17 09:33:28,678 - ERROR - ERROR: Task (/usr1/openeuler/src/yocto-poky/../yocto-meta-openeuler/meta-openeuler/recipes-core/distributed-middleware/device-auth_1.0.0.bb:do_unpack) failed with exit code ‘1’
2026-03-17 09:33:28,679 - INFO - NOTE: Running task 554 of 2921 (/usr1/openeuler/src/yocto-poky/../yocto-meta-openembedded/meta-oe/recipes-support/libestr/libestr_0.1.11.bb:do_unpack)

compile.yaml 配置:

build_in: docker
machine: qemu-aarch64
toolchain_type: EXTERNAL_TOOLCHAIN:aarch64
cache_src_dir:
no_layer: false
repos:

  • yocto-poky
  • yocto-meta-openembedded
    local_conf: |+
    DISTRO_FEATURES:append = " dsoftbus "

layers:
docker_param:
image:

swr.cn-north-4.myhuaweicloud.com/openeuler-embedded/openeuler-container:latest

parameters: -itd --network host
volumns:

  • /dev/net/tun:/dev/net/tun
  • /home/xxxx/rk3568/softbuss/dsoftbus/src:/usr1/openeuler/src
  • /home/xxxx/rk3568/softbuss/dsoftbus/build/qemu-aarch64:/home/openeuler/build/qemu-aarch64
    command: bash

已解决 直接用了现成的 docker 不自己搞环境了。