BMC Studio 和bingo 获取组件的方式上有什么区别呀

问题描述

同样的源码路径,bingo 可以正常编译构建出包,为什么 BMC studio 就会提示缺少组件和拉取代码失败呀

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2512LTS]

期望结果

怎么解决BMC studio 缺少组件的问题

请您尝试在这个工作空间的manifest里执行一下命令bingo fetch试试?
manifest的路径为~/bmc_studio/workspaces/您的工作空间名称/manifest

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

:white_check_mark: 总结

问题 根本原因 解决方法
bingo build 成功,BMC Studio 失败 GUI 层权限/凭据缺失 终端登录 conan/git,清理缓存
提示“缺少 firmware_mgmt 等组件” 未认证私有组件 执行 conan user 登录
UTF-8 解码错误 缓存文件损坏 删除 ~/.conan2/p/*
“获取失败”但 CLI 可构建 GUI 状态不同步 手动执行 bingo fetch

:light_bulb: 最终建议
BMC Studio 是便捷的图形工具,但不是最可靠的构建入口。所有关键操作建议先在命令行用 bingo 验证成功后再使用 GUI。

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

BMC Studio 与 Bingo 获取组件方式的区别及问题解决方案

在使用 BMC StudioBingo 进行组件管理与构建时,尽管它们共同服务于 OpenUBMC 项目的开发流程,但在组件获取机制、权限控制、依赖处理和用户交互方式上存在本质差异。这正是为何 bingo build 可以正常编译出包,而 BMC Studio 却提示“缺少组件”或“拉取失败” 的根本原因。


:magnifying_glass_tilted_left: 一、BMC Studio 与 Bingo 获取组件的方式区别

维度 Bingo(CLI) BMC Studio(GUI)
运行环境 命令行工具(CLI) Web 图形化界面(GUI)
核心工具 bingo 是底层构建与仓库管理工具 BMC Studio 是前端封装,依赖 bingoconan
组件拉取命令 直接调用 bingo fetchbingo build 通过点击“一键仓库部署”或“获取全量代码”,后台调用 bingo fetch
执行权限 通常以 root 用户运行(尤其在 Docker 或 CI 环境中) 前端进程可能以普通用户启动,权限受限
认证机制 支持通过 conan remote login 和 Git SSH 密钥自动认证 GUI 层可能未正确传递凭据,导致 Git/Conan 访问失败
错误容忍度 高(可部分成功,继续执行后续步骤) 低(任一组件失败即标记“获取失败”)
日志透明度 完整日志输出到终端,便于排查 日志被截断或隐藏,需手动查看 task.log

:white_check_mark: 关键差异总结
Bingo 是底层可信、高权限的命令行工具,能绕过许多 GUI 层面的限制;而 BMC Studio 是图形化外壳,其操作成功率高度依赖于环境配置完整性、权限一致性与网络凭据传递。


:warning: 二、常见导致 BMC Studio 拉取组件失败的原因

根据您提供的日志信息:

ERROR: 工作状态错误 (组件: firmware_mgmt): expected str, bytes or os.PathLike object, not NoneType
ERROR: 更新组件 firmware_mgmt 代码到 ... 失败
ERROR: 'utf-8' codec can't decode byte 0xa9 in position 6881: invalid start byte

常见问题归因如下:

1. 未登录 Conan 远程仓库

  • 虽然 bingo build 在命令行中已登录(例如执行过 conan user),但 BMC Studio 的 GUI 环境并未共享该会话
  • 当 GUI 尝试拉取私有组件(如 firmware_mgmt, remote_console)时,因缺少身份认证,导致拉取失败。

:white_check_mark: 解决方案
在终端中显式登录 Conan 远程:

conan user -r openubmc_dev -p <your_password> <your_username>

2. Git 凭证未配置或使用 HTTPS 协议

  • 若 manifest 中使用的是 https:// 地址而非 git@,系统会要求输入账号密码。
  • GUI 环境无法弹出输入框,导致任务中断。

:white_check_mark: 解决方案

  • 使用 SSH 协议克隆仓库(推荐)
  • 或配置 Git 凭据存储:
git config --global credential.helper store

3. 缓存损坏或编码异常(如 UTF-8 解码错误)

'utf-8' codec can't decode byte 0xa9 ... invalid start byte

这表明本地缓存文件存在二进制污染或非 UTF-8 编码文件被当作文本读取,常见于:

  • 中断的下载
  • 错误写入的 .conan 缓存
  • 不同操作系统(Windows/Linux)混合使用

:white_check_mark: 解决方案
清理 Conan 缓存后重试:

# 清理 conan2 缓存(当前主流)
rm -rf ~/.conan2/p/*

# 或针对 conan1
rm -rf ~/.conan/data

然后 重启 BMC Studio 并重新执行“一键仓库部署”


4. Bingo 版本过旧,不兼容当前 manifest 或 Conan2

  • 您截图中显示 bingo 版本为 0.6.80,属于较新版本,但仍可能存在兼容问题。
  • 旧版 bingo 对路径解析、编码处理、NoneType 处理存在缺陷。

:white_check_mark: 解决方案
升级到最新版 bingo

bingo upgrade

检查版本:

bingo -v

5. BMC Studio 界面卡住或未刷新状态

  • 有时组件实际已拉取成功,但 GUI 显示“失败”,是前端状态同步问题。
  • 特别是在 WSL 或远程服务器上运行时,端口转发/浏览器缓存可能导致异常。

:white_check_mark: 解决方案

  • 手动检查目录是否存在:~/bmc_studio/workspaces/<your_workspace>/manifest/
  • 查看日志路径:~/bmc_studio/workspaces/<your_workspace>/temp/log/task.log
  • 直接在命令行执行等效命令验证:
cd ~/bmc_studio/workspaces/<your_workspace>/manifest
bingo fetch -b openUBMC --stage stable

:white_check_mark: 三、推荐解决方案步骤(完整流程)

:white_check_mark: 步骤一:确保环境一致且权限正确

# 切换至 root 用户(推荐在容器内运行)
sudo su -

# 确保在家目录下操作
cd ~

:white_check_mark: 步骤二:升级并检查工具版本

bingo upgrade
bingo -v  # 应 ≥ 0.6.56,建议 ≥ 0.6.80

:white_check_mark: 步骤三:登录 Conan 和 Git

# 登录 Conan 远程
conan user -r openubmc_dev -p "your_password" "your_username"

# 配置 Git 免密(使用 SSH)
ssh-keygen -t rsa -C "your_email@example.com"
# 将公钥添加到 GitCode 账户

:white_check_mark: 步骤四:清理缓存

rm -rf ~/.conan2/p/*   # Conan2 缓存
rm -rf ~/bmc_studio/workspaces/<your_workspace>/temp/*  # BMC Studio 临时文件

:white_check_mark: 步骤五:手动拉取组件(绕过 GUI 问题)

cd ~/bmc_studio/workspaces/<your_workspace>/manifest
bingo fetch -b openUBMC --stage stable

:white_check_mark: 步骤六:重新打开 BMC Studio

bingo studio

访问:http://localhost:12888

此时刷新页面,“仓库管理”应显示所有组件已就位。


:pushpin: 四、附加建议

  1. 优先使用命令行验证功能
    凡是 GUI 报错的场景,先用 bingo fetch / bingo build 在终端验证是否真失败。若 CLI 成功,则问题出在 GUI 层。

  2. 避免频繁切换工作空间
    根据官方文档,BMC Studio 不支持在拉取代码过程中切换或删除工作空间,否则易引发路径错误。

  3. 关注 task.log 文件
    所有 GUI 操作底层日志均记录于:

    ~/bmc_studio/workspaces/<workspace_name>/temp/log/task.log
    

    查看此文件是最直接的排错方式。

  4. 组件“手动导入”为临时方案
    如提示“缺少组件,请手动导入”,说明自动拉取失败。可尝试手动添加 MDS 文件,但治标不治本。


:white_check_mark: 总结

问题 根本原因 解决方法
bingo build 成功,BMC Studio 失败 GUI 层权限/凭据缺失 终端登录 conan/git,清理缓存
提示“缺少 firmware_mgmt 等组件” 未认证私有组件 执行 conan user 登录
UTF-8 解码错误 缓存文件损坏 删除 ~/.conan2/p/*
“获取失败”但 CLI 可构建 GUI 状态不同步 手动执行 bingo fetch

:light_bulb: 最终建议
BMC Studio 是便捷的图形工具,但不是最可靠的构建入口。所有关键操作建议先在命令行用 bingo 验证成功后再使用 GUI。

如仍无法解决,请提供 task.log 中的具体错误片段,可进一步定位问题。

相关链接:

  1. BMC Studio问题
  2. 0.5.317版本的bmcgo,出BMC签名包失败问题
  3. 25.06版本storage组件编译问题
  4. bmc studio工具使用问题
  5. openUBMC

您好,有尝试过bingo fetch吗