现有可执行文件的systemd yocto配方
我正在寻找一个模板配方,用于在yocto中启用systemd配方。可执行文件已经由yocto提供的配方安装。此配方的目标是提供启动时运行的make现有可执行文件的systemd yocto配方,yocto,bitbake,openembedded,Yocto,Bitbake,Openembedded,我正在寻找一个模板配方,用于在yocto中启用systemd配方。可执行文件已经由yocto提供的配方安装。此配方的目标是提供启动时运行的make/usr/bin/btattach 首先,我在相应的配方目录中的层中创建了以下结构: btattach-systemd/ |-- files | `-- btattach.service `-- btattach-systemd.bb 食谱的内容 SUMMARY = "Writes patterns to the fb device" LICEN
/usr/bin/btattach
首先,我在相应的配方目录中的层中创建了以下结构:
btattach-systemd/
|-- files
| `-- btattach.service
`-- btattach-systemd.bb
食谱的内容
SUMMARY = "Writes patterns to the fb device"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
REQUIRED_DISTRO_FEATURES= "systemd"
SRC_URI = "file://btattach.service"
S = "${WORKDIR}"
do_install () {
install -m 0644 ${WORKDIR}/btattach.service.service ${D}${sysconfdir}/systemd/system
}
SYSTEMD_SERVICE_${PN} = "btattach.service"
除此之外,映像配方中的IMAGE\u安装
已通过btattach systemd
正确扩展
bitbake btattach systemd
运行正常,但在尝试构建完整映像时,请在整个映像的do_rootfs
步骤中执行。错误如下:
* opkg_solver_install: Cannot install package btattach-systemd.
关于bug在哪里的想法?我认为配方应该如下所示(省略摘要、许可证、许可证校验和,并假设二进制软件包称为“btattach”):
我认为配方应该如下所示(省略摘要、许可证、许可证校验和,并假设二进制软件包名为“btattach”):
很抱歉,我没有评论你的问题,因为我没有这方面的声誉。此外,它比我的更完整,但这里有一个可能的快速修复方法:
在我看来,您是在安装
'btattach.service.service'
而不是'btattach.service'
我很抱歉没有对您的问题进行评论,因为我对此没有声誉。此外,它比我的更完整,但这里有一个可能的快速修复方法:
在我看来,您安装的是
'btattach.service.service'
,而不是'btattach.service'
假设.service文件是正确的,我对Yocto配方的看法以及它可能失败的原因是,btattach.service文件未包含在安装中,这是下面最后一行所做的
您是否确保您事先也执行了bitbake btattach.systemd-c cleanall
和bitbake btattach.systemd-c cleanstate
,因为我注意到您在Yocto配方中有一个输入错误,即btattach.service.service
SUMMARY = "Writes patterns to the fb device"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
REQUIRED_DISTRO_FEATURES= "systemd"
SRC_URI = "file://btattach.service"
S = "${WORKDIR}"
do_install () {
install -m 0644 ${WORKDIR}/btattach.service ${D}${sysconfdir}/systemd/system
}
SYSTEMD_SERVICE_${PN} = "btattach.service"
FILES_${PN} += "/lib/systemd/system/btattach.service"
假设.service文件是正确的,我对Yocto配方的看法以及它失败的原因是因为btattach.service文件没有包含在安装中,这是下面最后一行所做的 您是否确保您事先也执行了
bitbake btattach.systemd-c cleanall
和bitbake btattach.systemd-c cleanstate
,因为我注意到您在Yocto配方中有一个输入错误,即btattach.service.service
SUMMARY = "Writes patterns to the fb device"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
inherit systemd
REQUIRED_DISTRO_FEATURES= "systemd"
SRC_URI = "file://btattach.service"
S = "${WORKDIR}"
do_install () {
install -m 0644 ${WORKDIR}/btattach.service ${D}${sysconfdir}/systemd/system
}
SYSTEMD_SERVICE_${PN} = "btattach.service"
FILES_${PN} += "/lib/systemd/system/btattach.service"
这似乎试图安装在
SYSTEMD\u服务下注册的所有软件包?我不确定这是我的问题。你能详细说明一下吗?是的,它尝试这样做,当然你也可以手动将其限制为一个文件。由于您目前没有提供更多详细信息(查看日志!),我个人猜测您是在某种程度上弄乱了路径。请仔细查看我给您的示例中的systemd_unitdir引用。这似乎尝试安装在systemd_SERVICE
下注册的所有软件包?我不确定这是我的问题。你能详细说明一下吗?是的,它尝试这样做,当然你也可以手动将其限制为一个文件。由于您目前没有提供更多详细信息(查看日志!),我个人猜测您是在某种程度上弄乱了路径。请仔细查看我给您的示例中的systemd_unitdir引用。