URL 的提取程序失败:'file://dropbear.default'。无法从任何来源获取 URL
Fetcher failure for URL: 'file://dropbear.default'. Unable to fetch URL from any source
我正在尝试覆盖 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}/文件:"
我仍然遇到同样的错误
将 bbappend 与它要附加到的 bb 配方放在同一目录中是很不寻常的,但是不管你的船漂浮在何处 :) 在那种情况下,这种不寻常的情况实际上是问题的一部分。
我不确定 _myfolder
在 FILESEXTRAPATHS_prepend_myfolder
中代表什么?如果 myfolder
不是 OVERRIDES
变量(或其他隐式值,例如 class-target
、virtclass-
等)的一部分,那么它将不起作用。我很确定你实际上应该从 FILESEXTRAPATHS_prepend
中删除它。 c.f。 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
)中的路径是绝对的,它会找到你想要的文件),
- 从您的
FILESEXTRAPATHS_prepend
中删除 ${THISDIR}/${PN}
(即 ./dropbear
)或将其放在您放置要覆盖的文件的目录之后,
- 将以机器 (
${MACHINE}
) 命名的子目录直接放在 ./dropbear
中,因为在 FILESPATH
中指定的目录(因此,FILESEXTRAPATHS
)会自动扩展为 FILESOVERRIDES
其中包含机器名称。基本上,假设 FILESPATH
设置为 dirA:dirB
,dirA/poky
(如果 poky 是您的发行版)将首先被搜索,然后是 dirB/poky
,然后是 dirA/machine
,dirB/machine
、dirA
最后是 dirB
。因此,通过在 ./dropbear
中有一个以您的机器命名的子目录,Yocto 将在 ./dropbear
之前自动搜索它。 c.f。 https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH
您可以通过从 ${WORKDIR}/temp
读取 log.do_fetch
日志文件来检查搜索了哪些目录以及搜索顺序,${WORKDIR}
可能会以类似 [=51] 的形式结束=].
您可以检查变量的值以及这些值是如何由 运行 bitbake dropbear -e
构建的历史记录。由于它可以输出数百万行,因此您通常将其通过管道传输到 less
或 more
,将其重定向到文件或通过管道传输到 grep -e "^VARTOCHECK="
.
我正在尝试覆盖 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}/文件:"
我仍然遇到同样的错误
将 bbappend 与它要附加到的 bb 配方放在同一目录中是很不寻常的,但是不管你的船漂浮在何处 :) 在那种情况下,这种不寻常的情况实际上是问题的一部分。
我不确定 _myfolder
在 FILESEXTRAPATHS_prepend_myfolder
中代表什么?如果 myfolder
不是 OVERRIDES
变量(或其他隐式值,例如 class-target
、virtclass-
等)的一部分,那么它将不起作用。我很确定你实际上应该从 FILESEXTRAPATHS_prepend
中删除它。 c.f。 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
)中的路径是绝对的,它会找到你想要的文件), - 从您的
FILESEXTRAPATHS_prepend
中删除${THISDIR}/${PN}
(即./dropbear
)或将其放在您放置要覆盖的文件的目录之后, - 将以机器 (
${MACHINE}
) 命名的子目录直接放在./dropbear
中,因为在FILESPATH
中指定的目录(因此,FILESEXTRAPATHS
)会自动扩展为FILESOVERRIDES
其中包含机器名称。基本上,假设FILESPATH
设置为dirA:dirB
,dirA/poky
(如果 poky 是您的发行版)将首先被搜索,然后是dirB/poky
,然后是dirA/machine
,dirB/machine
、dirA
最后是dirB
。因此,通过在./dropbear
中有一个以您的机器命名的子目录,Yocto 将在./dropbear
之前自动搜索它。 c.f。 https://docs.yoctoproject.org/ref-manual/variables.html#term-FILESPATH
您可以通过从 ${WORKDIR}/temp
读取 log.do_fetch
日志文件来检查搜索了哪些目录以及搜索顺序,${WORKDIR}
可能会以类似 [=51] 的形式结束=].
您可以检查变量的值以及这些值是如何由 运行 bitbake dropbear -e
构建的历史记录。由于它可以输出数百万行,因此您通常将其通过管道传输到 less
或 more
,将其重定向到文件或通过管道传输到 grep -e "^VARTOCHECK="
.