You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向bitbake传递Artifactory凭据?Docker运行场景问题求助

问题描述

我在Docker容器内运行以下bitbake命令:

docker exec -i yocto /bin/bash -c "bitbake ${IMAGE} --runall=fetch"

执行后触发错误:

ERROR: <RESOURCE-vXXX> do_fetch: Fetcher failure: Fetch command export PSEUDO_DISABLED=1; export PATH="..."; export HOME="..."; /usr/bin/env wget -t 2 -T 30 --passive-ftp --no-check-certificate -O /path/to/archive.tar.gz.tmp -P /path/to/downloads 'https://<ARTIFACTORY.COM>/path/to/archive.tar.gz' --progress=dot -v failed with exit code 6, no output
ERROR: <RESOURCE-vXXX> do_fetch: Bitbake Fetcher Error: FetchError('Unable to fetch URL from any source.', 'https://<ARTIFACTORY.COM>/path/to/archive.tar.gz;unpack=1;name=vendor;subdir=/path/to/<RESOURCE>')

根据资料,退出码6代表用户名/密码认证失败,我需要给bitbake或通过docker exec传递Artifactory的凭据/API密钥,有没有现成的实现方案?

更新尝试

我在conf/local.conf中添加了以下配置:

SRC_URI += \"https://<ARTIFACTORY.COM>;protocol=https;user=${ARTIFACTORY_USER}:${ARTIFACTORY_PASSWD}\"

但现在出现新错误:

Bitbake Fetcher Error: NoChecksumError('Missing SRC_URI checksum', 'https://<ARTIFACTORY.COM>')
解决方案

一、正确传递Artifactory凭据的两种方案

1. 环境变量注入(适配Docker exec场景)

直接在docker命令中注入环境变量,让容器内的bitbake能读取到认证信息:

docker exec -i -e ARTIFACTORY_USER=你的用户名 -e ARTIFACTORY_PASSWD=你的密码/API密钥 yocto /bin/bash -c "bitbake ${IMAGE} --runall=fetch"

然后在对应资源的配方文件(.bb或.bbappend)中,给目标资源的SRC_URI添加认证参数,不要在local.conf里全局追加:

SRC_URI = "https://<ARTIFACTORY.COM>/path/to/archive.tar.gz;protocol=https;user=${ARTIFACTORY_USER}:${ARTIFACTORY_PASSWD}"

2. 使用.netrc安全存储凭据

在宿主机创建~/.netrc文件,内容如下:

machine <ARTIFACTORY.COM>
login 你的用户名
password 你的API密钥/密码

执行docker命令时,把这个文件挂载到容器内的用户home目录:

docker exec -i -v ~/.netrc:/home/yocto-user/.netrc yocto /bin/bash -c "bitbake ${IMAGE} --runall=fetch"

wget/curl会自动读取.netrc的认证信息,无需修改任何配方或配置文件,安全性更高。

二、解决NoChecksumError错误

这个错误是因为新增的SRC_URI没有提供文件校验和,Bitbake默认强制校验文件完整性,解决方法如下:

1. 自动生成并添加校验和

运行以下命令,Bitbake会自动计算对应资源的校验和,并更新到配方文件中:

bitbake -c checksum <RESOURCE>

这里的<RESOURCE>是报错中的资源名称(比如<RESOURCE-vXXX>)。

2. 临时禁用校验(仅测试用,不推荐正式构建)

如果只是临时测试,可以在conf/local.conf中添加:

BB_STRICT_CHECKSUM = "0"

注意:正式构建不要这么做,会失去文件完整性校验的安全保障。

内容的提问来源于stack exchange,提问作者DonnyFlaw

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:45:39