Yocto:在 etcdir 中创建新目录

问题描述 投票:0回答:3

我是 Yocto 的新手, 我想在

/etc
中创建一个目录并将我的服务器证书复制到该目录中。我尝试在下面执行此操作,但它没有在
/etc
中创建任何目录,但是我没有收到任何编译错误:

DESCRIPTION = "OC sample service"

SUMMARY = "Install and start a systemd service and copy server certificates"

LICENSE = "MIT"

SRC_URI = "file://service.tar.gz"

inherit systemd

S = "${WORKDIR}/service"

SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "sample.service"
SYSTEMD_AUTO_ENABLE = "enable"
INSANE_SKIP_${PN} += "installed-vs-shipped"

do_configure() {
        :
}

do_compile() {
        :
}

do_install() {

        install -d ${D}${systemd_unitdir}/system

        install -m 0755 ${S}/sample.service ${D}${systemd_unitdir}/system

        mkdir -p ${D}${etcdir}/oc_certs

        install -m 0755 ${S}/certs/* ${D}${etcdir}/oc_certs

}

FILES_${PN} = "${systemd_unitdir}/system

现在的问题是,sample.service 已成功放置到该位置,但

/etc/oc_certs
尚未创建。

yocto bitbake yocto-recipe
3个回答
6
投票

除了 LetoThe2nd 的答案之外:

${etcdir}
变量通常为空。如果您想要
/etc
的变量,那就是
${sysconfdir}
。所以你的文件可能已经安装到根目录了。

检查

bitbake -e <your_recipe>
的输出并尝试找到
etcdir
进行验证。

还可以删除

INSANE_SKIP_${PN} += "installed-vs-shipped"
,它会隐藏您试图查找的错误(您将看到安装在何处但未发货的内容)。

顺便说一句,LetoThe2nd 的答案也是需要的,因为您正在覆盖(而不是附加

FILES_${PN}
,否则就不需要它了。
${sysconfdir}
已经是
FILES_${PN}
的一部分。


3
投票

“不工作”是一个相当糟糕的错误描述,但最可能的问题是它没有包含在图像中。这是因为 bitbakes 打包机制不知道该目录,因此添加它:

FILES_${PN} += "${etcdir}/oc_certs"

如果您需要进一步帮助,请用准确的错误描述以及相应的日志来扩展您的问题。


1
投票

您在 ${D} 之后缺少一个 /。要在 /etc 文件夹中创建一个目录,例如 mydir,只需在配方的 do_install() 中添加以下代码即可。

do_install() {
    install -d ${D}/etc/mydir
 }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.