如何解决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
FILESEXTRAPATHS_prepend_myfolder := "${THISDIR}/${PN}:${THISDIR}/${MACHINE}:${THISDIR}/files:" -----> 这应该是
${THISDIR}/${MACHINE}:${THISDIR}/files:"
我还是遇到了同样的错误
解决方法
在与 bb 配方相同的目录中有一个 bbappend 是非常不寻常的,但是无论您的船漂浮在什么地方 :) 在这种情况下,这种不寻常的情况实际上是问题的一部分。
我不确定 _myfolder
在 FILESEXTRAPATHS_prepend_myfolder
中代表什么?如果 myfolder
不是 OVERRIDES
变量(或其他隐式值,例如 class-target
、virtclass-
等)的一部分,那么它将不起作用。我很确定您实际上应该将它从 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 举报,一经查实,本站将立刻删除。