Yocto Kirkstone分支构建Chirpstack时Yarn拉取包失败
针对你遇到的Yarn拉取包时出现getaddrinfo EAI_AGAIN registry.yarnpkg.com错误,以下是几个可行的解决步骤:
检查构建环境的DNS解析能力
在执行bitbake的终端中运行nslookup registry.yarnpkg.com,确认是否能正常解析域名。如果解析失败,说明构建终端的DNS配置有问题,可手动修改/etc/resolv.conf添加可靠的DNS服务器(比如8.8.8.8),并在local.conf中添加以下配置确保构建环境继承DNS设置:BB_ENV_EXTRAWHITE += "RESOLV_CONF" RESOLV_CONF = "/etc/resolv.conf"替换Yarn镜像源为国内镜像
原官方镜像访问不稳定,可修改Chirpstack的recipe,在编译前切换到国内npm镜像:
打开meta-ir-chirpstack/recipes-chirpstack/chirpstack/chirpstack_4.3.0.bb,添加以下内容:do_compile_prepend() { cd ${S}/git/ui yarn config set registry https://registry.npmmirror.com/ }或者在构建前临时设置环境变量:
export YARN_REGISTRY=https://registry.npmmirror.com/ && bitbake chirpstack检查Yocto网络限制配置
检查build/conf/local.conf中是否设置了BB_NO_NETWORK = "1",如果有则注释掉该配置,因为Chirpstack前端构建需要联网拉取依赖。如果你的环境使用代理,需在local.conf中添加代理配置:HTTP_PROXY = "http://你的代理地址:端口/" HTTPS_PROXY = "http://你的代理地址:端口/" NO_PROXY = "localhost,127.0.0.1,registry.npmmirror.com" BB_ENV_EXTRAWHITE += "HTTP_PROXY HTTPS_PROXY NO_PROXY"预缓存依赖包到本地
手动下载https://registry.yarnpkg.com/@ant-design/colors/-/colors-6.0.0.tgz,找到Yarn缓存目录(运行yarn cache dir查看),将包放入对应缓存路径。然后修改recipe中的yarn install命令为yarn install --offline,强制使用本地缓存。升级Yarn版本
Yarn v1.22.18可能存在DNS解析的兼容性问题,可尝试升级Yarn版本。在构建环境中安装更高版本的Yarn(比如v1.22.22),并确保构建时使用新版本执行依赖拉取。
内容的提问来源于stack exchange,提问作者PYuan

