Yocto:在etcdir中创建一个新目录

Yocto:在etcdir中创建一个新目录,yocto,bitbake,Yocto,Bitbake,我是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.

我是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_证书。

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

FILES_${PN} += "${etcdir}/oc_certs"
如果您需要进一步的帮助,请分别在相应的日志中用精确的错误描述扩展您的问题。

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

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

如果您需要进一步的帮助,请用精确的错误描述扩展您的问题,分别是相应的日志。

除了LetoThe2nd的答案之外:
${etcdir}
变量通常为空。如果需要
/etc
的变量,则它是
${sysconfdir}
。因此,您的文件可能已安装到根目录

检查
bitbake-e
的输出,并尝试查找
etcdir
进行验证

还可以删除
INSANE\u SKIP{PN}+=“installed vs shipped”
,它隐藏了您试图查找的错误(您将看到什么安装在哪里,但没有发布)


顺便说一句,Letoth2nd的答案也是需要的,因为您正在覆盖(而不是附加
文件${PN}
,否则就不需要了。
${sysconfdir}
已经是
文件${PN}
的一部分,除了Letoth2nd的答案:
${etcdir}
变量通常为空。如果您想要
/etc
的变量,它是
${sysconfdir}
。因此您的文件可能已安装到根目录

检查
bitbake-e
的输出,并尝试查找
etcdir
进行验证

还可以删除
INSANE\u SKIP{PN}+=“installed vs shipped”
,它隐藏了您试图查找的错误(您将看到什么安装在哪里,但没有发布)


顺便说一句,LetoThe2nd的答案也是需要的,因为您正在覆盖(而不是附加
文件${PN}
,否则就不需要了。
${sysconfdir}
已经是
文件${PN}
您在${D}之后缺少了一个/。要在/etc文件夹中创建一个目录,比如说mydir,只需在配方的do_install()中添加以下代码

do_install() {
    install -d ${D}/etc/mydir
 }

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

do_install() {
    install -d ${D}/etc/mydir
 }

“不工作”并不能准确解释什么不工作。如果您收到错误消息,请务必提供该消息。如果代码段未执行,请提供您正在处理的完整配方,以便我们了解它未执行的原因。通常,在提问时使用以下模式:a)您希望发生什么,特别是b)实际发生的情况,特别是Hi@AlexanderKanavin,感谢您的快速评论,我已经更新了我的问题。文件似乎仍然缺少目录。“不工作”并不能准确解释什么不工作。如果您收到错误消息,请务必提供该消息。如果代码段没有执行,那么请提供您正在处理的完整配方,这样我们就可以了解为什么它没有执行。通常,在提问时使用以下模式:a)你预计会发生什么,特别是b)实际发生了什么,特别是Hi@AlexanderKanavin,谢谢你的快速评论,我已经更新了我的问题。文件似乎仍然缺少目录。嗨,Letoth22,谢谢你的回复,我添加了文件${PN}+=“${etcdir}”/oc_certs”,但这没有帮助。嗨,Letoth22,谢谢你的回复,我添加了文件${PN}+=“${etcdir}/oc_certs”,但这没有帮助。嗯,
${sysconfdir}
包含
/etc
,所以在这个问题上不需要斜杠。但是,
${D}
确实不包含尾部斜杠。
${sysconfdir}
包含
/etc
,因此在这个特定的问题中不需要斜杠。但是,
${D}
确实不包含尾部斜杠。