微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

URL 的 Fetcher 失败:'file://dropbear.default'无法从任何来源获取 URL

如何解决URL 的 Fetcher 失败:'file://dropbear.default'无法从任何来源获取 URL

我正在尝试覆盖 dropbear.default

图层如下所示: Meta/recipes-core/dropbear

    ├── dropbear
    │   ├── 0001-urandom-xauth-changes-to-options.h.patch
    │   ├── 0005-dropbear-enable-pam.patch
    │   ├── 0006-dropbear-configuration-file.patch
    │   ├── dropbear
    │   ├── dropbear.default
    │   ├── dropbear-disable-weak-ciphers.patch
    │   ├── dropbearkey.service
    │   ├── dropbear@.service
    │   ├── dropbear.socket
    │   └── init
    ├── dropbear_2020.81.bb
    ├── dropbear_%.bbappend
    ├── dropbear.inc
    └── files
        ├── 0007-patch1.patch
        └── 0008-patch2.patch
    └──$MACHINE folder name
        ├──dropbear.default   -------> this one I want to use to replace the old one from the /dropbear/dropbear.default above

我创建了一个 dropbear_%.bbappend

在那个 dropbear_%.bbappend 文件我有

FILESEXTRAPATHS_prepend_myfolder := "${THISDIR}/${PN}:${THISDIR}/${MACHINE}:${THISDIR}/files:" -----> 这应该是

${THISDIR}/${MACHINE}:${THISDIR}/files:"

我还是遇到了同样的错误

解决方法

在与 bb 配方相同的目录中有一个 bbappend 是非常不寻常的,但是无论您的船漂浮在什么地方 :) 在这种情况下,这种不寻常的情况实际上是问题的一部分。

我不确定 _myfolderFILESEXTRAPATHS_prepend_myfolder 中代表什么?如果 myfolder 不是 OVERRIDES 变量(或其他隐式值,例如 class-targetvirtclass- 等)的一部分,那么它将不起作用。我很确定您实际上应该将它从 FILESEXTRAPATHS_prepend 中剥离。比照https://docs.yoctoproject.org/ref-manual/variables.html#term-OVERRIDES

考虑到当前目录布局,您的 bbappend 中的 FILESEXTRAPATHS_prepend 将扩展为:

./dropbear:./${MACHINE}:./files:

Yocto 将在 SRC_URI 中搜索文件的路径将从最左边到最右边搜索,c.f. https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH(虽然 IMO 我可以给你,但它的措辞并不明确)。

从技术上讲,您是在告诉 Yocto 在 dropbear 目录中首先搜索 dropbear.default,然后是 ${MACHINE} 目录,然后是 files。这已经是原始配方使用的内容,所以总而言之,您的 bbappend 是您要覆盖的文件的空操作。

要解决此问题,请执行以下任一操作:

  • 将你的 bbappend 移动到另一个目录(可能是层,因为我很确定你没有提交和推送到原始 dropbear 配方所在的层的权利?然后 dropbear.default 文件将是取自与 bbappend 相同级别的 dropbear${MACHINE}files 目录。(并且由于 FILESEXTRAPATHS(和 FILESPATH)中的路径是绝对的,它会找到你想要的文件),
  • 从您的 ${THISDIR}/${PN} 中删除 ./dropbear(即 FILESEXTRAPATHS_prepend)或将其放在您放置要覆盖的文件的目录之后,
  • 将一个以机器 (${MACHINE}) 命名的子目录直接放在 ./dropbear 中,因为 FILESPATH 中指定的目录(因此 FILESEXTRAPATHS)会自动扩展为 {{1 }} 包含机器名称。基本上,假设 FILESOVERRIDES 设置为 FILESPATH,将首先搜索 dirA:dirB(如果 poky 是您的发行版),然后是 dirA/poky,然后是 dirB/poky,{ {1}}、dirA/machine,最后是 dirB/machine。因此,通过在 dirA 中以您的机器命名的子目录,Yocto 会自动在 dirB 之前搜索它。比照https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH

您可以通过从 ./dropbear 读取 ./dropbear 日志文件来检查搜索了哪些目录以及搜索的顺序,其中 log.do_fetch 可能会以类似 ${WORKDIR}/temp 的形式结束.

您可以通过运行 ${WORKDIR} 来检查变量的值以及这些值的构建历史。由于它可以输出数百万行,因此您通常将其通过管道传输到 tmp/work/<target_arch>/dropbear/2020.81-r0/bitbake dropbear -e,将其重定向到文件或通过管道传输到 less

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。