iam组件的作用是什么呀,不同的方式构建权限不一样

使用

bingo build -t personal -b openUBMC -bt release --stage rc
或者
bingo build -t publish -sc default -b openUBMC -bt release --stage stable

提示没有权限,也确实没有权限

iam/1.0.12@openubmc/stable: WARN: Trying to remove corrupted source folder
iam/1.0.12@openubmc/stable: WARN: This can take a while for big packages
iam/1.0.12@openubmc/stable: Calling source() in /root/.conan2/p/iam7df55e6bc4064/s
iam/1.0.12@openubmc/stable: Shallow fetch of git repo
iam/1.0.12@openubmc/stable: RUN: git init
iam/1.0.12@openubmc/stable: RUN: git remote add origin "<hidden>"
iam/1.0.12@openubmc/stable: RUN: git fetch --depth 1 origin 1.0.12
ERROR: 
	ConanException: Command 'git fetch --depth 1 origin 1.0.12' failed with errorcode '128'
b'fatal: <CH.00905404> can not read project. user: futron. Request-id is bPjjmRLWHK.\nfatal: Could not read from remote repository.\n\nPlease make sure you have the correct access rights\nand the repository exists.\n'
e[31mERROR: 执行命令 conan create . -pr=profile.luajit.ini -pr:b profile.dt.ini  -s:a build_type=Release  -o firmware_mgmt/*:community_enable=False -o bmc_time/*:manufacture=True -o */*:enable_luajit=True -o vpd/*:board_name=openUBMC -o fructrl/*:manufacture=True -o chassis/*:manufacture=True -o webui/*:energy_enabled=False -o help/*:board_name=openUBMC -o */*:module_symvers=1ee923e971f1cf759b9b1cf3df4fbdf4182b1eb2d5f267ef64494e6ea0bf9b86  --user=openubmc --channel=stable --build=missing 错误, 日志: /root/workspace/manifest/temp/log/task.loge[0m

使用

bingo build 

提示,就不报错

iam/1.0.12@openubmc/stable: Already installed! (92 of 107)

怎么回事呢

答案内容由AI生成,仅供参考:
您遇到的问题是由于 bingo build 命令在不同模式下对源码获取权限和远程仓库访问方式的处理不同,导致在使用 -t personal-t publish 等特定参数时,Conan 尝试从私有 Git 仓库拉取 iam 组件的源码失败,而直接使用 bingo build(无参数)却能成功,是因为它直接使用了本地缓存的已构建包(Already installed!)。

下面为您逐步分析原因和解决方案:


:white_check_mark: 1. iam 组件的作用是什么?

根据上下文和 openUBMC 架构,iam 组件是 身份与访问管理(Identity and Access Management) 的核心模块,主要功能包括:

  • 用户认证与授权管理:管理用户登录、角色分配(如 Predefined Role、Custom Role)、权限控制(Permissions Control)。
  • 与 SSH Public Key、SNMPv3 密码等敏感配置关联:通过 MDS 数据模型定义和管理敏感属性(如 sensitive: true),确保只有具备权限的角色(如 Predefined Role)才能访问。
  • 与 BMC Studio 集成:作为核心服务组件,其数据模型(model.json)被 BMC Studio 用于可视化配置和 CSR 包生成。
  • 支撑系统安全策略:是实现“权限控制”(Permissions Control)机制的基础,决定了哪些用户或进程可以操作关键硬件组件(如 Component_DPUCard)或系统配置。

:magnifying_glass_tilted_left: 总结iam 是 openUBMC 中负责“谁可以做什么”的核心安全组件,其源码通常存储在受权限保护的私有 Git 仓库中(如华为内部仓库),因此访问受限。


:white_check_mark: 2. 为什么 bingo build 没有报错,但加参数就失败?

:pushpin: 核心原因:Conan 源码拉取策略不同

命令 行为 是否触发源码拉取 是否使用缓存
bingo build(无参数) 默认构建当前产品包(如 openUBMC),优先使用本地已缓存的 Conan 包 :cross_mark: :white_check_mark:
bingo build -t personal ...-t publish ... 明确要求重新构建(可能包括从源码编译),触发 conan create 命令 :white_check_mark: :cross_mark:

:magnifying_glass_tilted_left: 错误日志关键点:

ERROR: Command 'git fetch --depth 1 origin 1.0.12' failed with errorcode '128'
fatal: <CH.00905404> can not read project. user: futron. Request-id is bPjjmRLWHK.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

这表明:

  • conan create 命令尝试从 Git 仓库拉取 iam/1.0.12 的源码;
  • 仓库地址是私有的;
  • 当前用户(futron没有权限访问该仓库
  • bingo build(无参数)跳过了源码拉取,直接使用了之前构建好的包(Already installed!,所以不报错。

:white_check_mark: 3. 为什么 -t personal-t publish 会触发源码拉取?

根据 bingo 命令设计逻辑:

参数 作用 是否强制重建源码
-t personal 个人构建模式,常用于开发调试,默认不使用缓存,倾向于从源码构建 :white_check_mark: 强制拉源码
-t publish 发布模式,用于生成正式版本包,必须从源码构建以保证可追溯性 :white_check_mark: 强制拉源码
无参数 产品级构建,优先使用缓存包,仅在缺失时才拉源码 :cross_mark: 可能跳过

:pushpin: 所以:您不是“权限不够”,而是“命令触发了需要权限的操作”


:white_check_mark: 4. 解决方案

:white_check_mark: 方案一:推荐 —— 使用缓存包,避免源码拉取(适合普通开发)

如果您只是想构建 openUBMC 产品包,不要使用 -t personal-t publish,直接使用:

cd /home/workspace/manifest
bingo build -b openUBMC -bt release --stage rc

:white_check_mark: 优点

  • 使用本地已缓存的 iam/1.0.12@openubmc/stable 包(已安装);
  • 不触发 Git 拉取,避免权限问题;
  • 构建速度快,稳定。

:magnifying_glass_tilted_left: 您看到的 Already installed! (92 of 107) 就是系统成功复用缓存包的证明。


:white_check_mark: 最终建议总结

您的需求 推荐操作
想快速构建 openUBMC 包,不修改 iam 组件 :white_check_mark: 直接执行 bingo build (不要加 -t personal-t publish
想修改 iam 组件源码并构建 :white_check_mark: 先确保 Git 权限正常 → 清理缓存 → 使用 bingo build -t personal ...

:light_bulb: :white_check_mark: 结论

iam 是 openUBMC 的身份权限核心组件,其源码通常位于私有仓库。
您遇到的“权限不足”不是系统权限问题,而是 Conan 尝试从私有 Git 仓库拉取源码失败。
解决方案:避免使用 -t personal / -t publish,直接使用 bingo build,并确保 Conan 远程指向社区仓库 。

如需修改 iam 源码,请先解决 Git 访问权限,并使用 conan remote 配置正确的源。

1 个赞

@lifei 这个AI的回答比较全面详实。看下是否解决了你的问题。 如果没问题, 请标记下已解决。