答案内容由AI生成,仅供参考:
总结:本次问题是由于依赖仍指向已废弃的 @openbmc/stable 命名空间及 openbmc_opensource 远程所致。通过更新远程配置 + 修正依赖命名 + 清理缓存即可恢复正常构建流程。
点击此处查看详细分析解答
编译失败问题分析与解决方案:无法找到 openubmc_opensource 远程仓库组件
根据您提供的编译环境信息和日志,当前在使用 bingo build 构建 openUBMC 项目时出现了依赖包无法下载的问题。根本原因如下:
问题定位
从 task.log 日志可明确看出,构建过程中尝试从 openbmc_opensource 远程仓库下载组件 rackmount/1.113@openbmc/stable,但返回了 404 Not Found 错误:
ERROR: Recipe 'rackmount/1.113@openbmc/stable' not found
ERROR: 404: Not found. [Remote: openbmc_opensource]
而您的 conan remote list 配置中实际添加的是 openubmc_opensource,而非 openbmc_opensource:
openubmc_opensource: https://conan.openubmc.cn/openubmc_opensource
这表明:
构建流程中引用了错误的远程仓库名称 openbmc_opensource,而该仓库并不存在或已废弃。
当前应使用的正确开源远程仓库是:openubmc_opensource
根本原因分析
-
远程仓库名称不匹配
项目 manifest.yml 或构建脚本中依赖的组件使用了旧的命名格式(@openbmc/stable),导致 Conan 自动尝试访问已弃用的 openbmc_opensource 仓库。
-
组件命名空间迁移未同步
openUBMC 社区已完成从 openbmc 到 openubmc 的命名空间迁移。旧组件路径如:
rackmount/1.113@openbmc/stable
应更新为:
rackmount/1.113@openubmc/stable
-
远程仓库配置虽正确,但依赖未适配
虽然您已正确配置了 openubmc_opensource 仓库,但如果构建仍查找 openbmc_opensource,说明项目配置未同步到最新规范。
解决方案
步骤一:确认并修正远程仓库配置
确保只保留正确的远程仓库,删除已废弃的:
# 删除错误/旧远程(如果存在)
conan remote remove openbmc-opensource 2>/dev/null || true
conan remote remove openbmc_sdk 2>/dev/null || true
conan remote remove openbmc_opensource 2>/dev/null || true
# 添加正确的远程仓库
conan remote add openubmc_dev https://conan.openubmc.cn/conan_1/ --insecure --force
conan remote add openubmc_sdk https://conan.openubmc.cn/bmc_sdk_latest --insecure --force
conan remote add openubmc_opensource https://conan.openubmc.cn/openubmc_opensource --insecure --force
推荐仓库列表:
openubmc_dev:开发版组件
openubmc_sdk:SDK 及工具链
openubmc_opensource:开源组件
步骤二:检查 manifest.yml 中的依赖项命名
进入 manifest/build/product/openUBMC/manifest.yml,搜索是否存在类似以下格式的依赖:
dependencies:
- conan: "rackmount/1.113@openbmc/stable"
将其修改为 openUBMC 命名空间:
dependencies:
- conan: "rackmount/1.113@openubmc/stable"
可执行以下命令快速查找问题依赖:
grep -r "@openbmc" . --include="*.yml"
步骤三:升级 bingo 工具至最新版本
旧版本 bingo 可能未完全适配新远程结构。建议升级:
bingo upgrade
# 或手动更新
pip install --upgrade bingo
确保版本 ≥ 0.6.121,当前您使用的是 0.6.146,符合要求。
步骤四:清除 Conan 缓存以避免冲突
旧缓存可能导致依赖解析错误:
# 清除 Conan v2 缓存
rm -rf ~/.conan2/p/*
# (可选)仅清除相关包缓存
conan remove "rackmount*" -c
步骤五:重新执行构建命令
推荐使用标准参数进行构建:
# 推荐构建命令
bingo build -b openUBMC -r openubmc_dev --stage rc -bt release
注意:不要指定 -r openubmc_opensource 作为主远程,应使用 openubmc_dev 主控构建流程,系统会自动从多个远程拉取所需组件。
参考知识库依据
openubmc_opensource 是当前有效的开源远程仓库,地址为 https://conan.openubmc.cn/openubmc_opensource。
openbmc_opensource 是旧仓库,已被弃用,应避免使用。
- 远程仓库配置应通过
conan remote add 显式注册,避免因默认配置导致失败。
- 命名空间已由
@openbmc/stable 迁移至 @openubmc/stable,所有依赖需同步更新。
- 多用户实践(如 yaoshun1, molin_peng)已验证新的远程配置结构。
最终建议命令序列
# 1. 清理废弃远程
conan remote remove openbmc-opensource openbmc_sdk openbmc_opensource 2>/dev/null || true
# 2. 添加正确远程
conan remote add openubmc_dev https://conan.openubmc.cn/conan_1/ --insecure --force
conan remote add openubmc_sdk https://conan.openubmc.cn/bmc_sdk_latest --insecure --force
conan remote add openubmc_opensource https://conan.openubmc.cn/openubmc_opensource --insecure --force
# 3. 升级工具
bingo upgrade
# 4. 清理缓存
rm -rf ~/.conan2/p/*
# 5. 执行构建
bingo build -b openUBMC -r openubmc_dev --stage rc -bt release
验证成功条件
- 构建日志中不再出现
404: Not found 或 Recipe not found
- 所有依赖均从
openubmc_* 系列远程成功下载
- 最终输出位于
output/rootfs_openUBMC.hpm
总结:本次问题是由于依赖仍指向已废弃的 @openbmc/stable 命名空间及 openbmc_opensource 远程所致。通过更新远程配置 + 修正依赖命名 + 清理缓存即可恢复正常构建流程。
如仍失败,请提供完整的 manifest.yml 片段及 /workdir/workdir1/openubmc/manifest/temp/log/task.log 内容以进一步诊断。