答案内容由AI生成,仅供参考:
account组件在使用bmcgo build时出现KeyError: 'pwd'错误的解决方案
问题描述
在使用bmcgo build --stage=stable构建account组件时,系统报错KeyError: 'pwd',导致构建失败。该问题发生在conan create命令执行过程中,具体错误信息如下:
- 错误类型:
KeyError: 'pwd' - 错误命令:
conan create --name account --version ... - 同时伴随
libiam/1.100.14@openubmc/stable包源码文件夹损坏的警告 - 使用OpenUBMC 25.09版本的
bmc_sdk进行环境初始化后,虽然可以成功出包,但account组件仍然报错
环境信息
| 项目 | 信息 |
|---|---|
| 操作系统 | Ubuntu 24.04 |
| 软件版本 | OpenUBMC 2509 |
| bmcgo 版本 | 0.7.14 |
| bingo 版本 | 0.6.75 |
| bmc-studio 版本 | 1.2.0 |
| Conan 版本 | 2.21.0 |
| Conan 包管理器 | 与 openubmc-bingo 存在版本兼容性问题 |
根本原因分析
Conan 版本不兼容
根据知识库分析,此问题的根本原因是 Conan 版本不兼容。
-
openubmc-bingo 依赖 Conan ≤1.62.0
openubmc-bingo 0.5.272明确要求conan<=1.62.0- 当前环境安装的是 Conan 2.21.0,远超兼容版本
-
Conan 2.x 与 1.x 的架构差异
- Conan 2.x 是对 1.x 的重大重构,存在 API 和行为上的不兼容
- 某些脚本中引用的内部变量(如
pwd)在新版 Conan 中可能已被移除或更改访问方式
-
升级后的环境冲突
- 开发者明确指出在使用 25.09 SDK 后出现问题,而旧版 SDK 可能绑定了更老的 Conan 版本
- 新版 Conan 2.21.0 与现有构建脚本不兼容,导致在调用
conan create时访问不存在的pwd属性
间接原因:组件依赖解析失败
- 构建过程中尝试重新获取
libiam/1.100.14@openubmc/stable源码 - “Trying to remove corrupted source folder” 表明 Conan 本地缓存可能因版本不兼容而损坏
- 这会触发
source()方法调用,进而执行到依赖脚本中访问pwd的代码路径
解决方案
方案一:降级 Conan 至兼容版本(推荐)
# 卸载当前 Conan 2.21.0
pip uninstall conan
# 安装兼容版本 1.62.0
pip install conan==1.62.0
# 验证版本
conan --version # 应输出 1.62.0
依据:知识库中明确指出
openubmc-bingo要求conan<=1.62.0,且多个构建日志显示此版本为官方兼容版本。
方案二:清除 Conan 缓存并重新初始化
如果必须使用新版本 Conan,应彻底清理旧状态:
# 删除所有远程配置
conan remote remove '*'
# 清除本地包缓存(谨慎操作,将删除所有已下载包)
conan remove "*" -c
# 重新初始化 SDK(确保使用匹配的 SDK 版本)
python3 init.py -path ./bmc_sdk.zip
# 重新执行构建
bmcgo build --stage=stable
注意:此操作将重新下载所有依赖,耗时较长。
方案三:检查并更新构建环境匹配性
参考已知解决方案:
- 确保使用的
bmc_sdk版本与manifest严格匹配 - 下载与当前代码分支对应的 SDK 版本(如 5.12 版本)
- 重新初始化构建环境
命令示例:
# 确认远程仓库设置正确
conan remote add openubmc_sdk https://conan.openubmc.cn/bmc_sdk_latest
conan remote add openubmc_dev https://conan.openubmc.cn/conan_1/
建议操作顺序
- 备份当前环境
- 执行方案一:降级到 Conan 1.62.0
- 若仍失败,执行方案二:清除缓存
- 确保使用与代码匹配的 SDK 版本
验证是否解决
成功标志:
bmcgo build命令不再出现KeyError: 'pwd'account组件能够成功完成conan create过程- 最终生成可部署的 HPM 包
预防措施
- 严格管理 Conan 版本:避免随意升级 Conan,应遵循
openubmc-bingo的版本约束 - 使用容器化构建:通过 Docker 固定构建环境版本,避免污染
- 文档化构建依赖:明确记录各 SDK 版本对应的工具链要求
重要提醒:Conan 官方虽推荐使用 2.0+ 版本,但在
openubmc-bingo明确不兼容的情况下,应优先保证构建系统的稳定性,待官方升级支持后再迁移。
相关链接: