【问题标题】:Yocto do_package: Didn't find service unit specified in SYSTEMD_SERVICE_Yocto do_package:未找到 SYSTEMD_SERVICE_ 中指定的服务单元
【发布时间】:2021-05-24 03:13:07
【问题描述】:

说明

我想在我的映像中安装一项服务,但由于以下错误而失败

ERROR: mypackage-git-r0 do_package: Didn't find service unit 'mypackage.service', specified in SYSTEMD_SERVICE_mypackage. 
ERROR: Logfile of failure stored in: <build-location>/poky/build/tmp/work/cortexa53-poky-linux/mypackage/git-r0/temp/log.do_package.7924
ERROR: Task (<layer-location>/meta-mypackage-oe/recipes-mypackage/mypackage/mypackage_git.bb:do_package) failed with exit code '1'

食谱

Python 源代码是从 git 克隆的,现在我想创建一个服务以在启动时运行。这是食谱

SUMMARY = " "
DESCRIPTION = " "
HOMEPAGE = " todo "
LICENSE = "CLOSED"
SRC_URI += "<URL>"

SRC_URI += "file://mypackage.service"

SRCREV   = "<srcrev>"
S        = "${WORKDIR}/git"


inherit setuptools3 systemd

RDEPENDS_${PN} = " \
    ${PYTHON_PN}-pyserial \
    ${PYTHON_PN}-pyusb \
    ${PYTHON_PN}-terminal \
"
SYSTEMD_PACKAGES = "${PN}"

do_install_append () {
    install -d ${D}${system_unitdir}
    install -m 0755 ${WORKDIR}/mypackage.service ${D}{system_unitdir}
}

SYSTEMD_SERVICE_${PN} = "mypackage.service"

FILES_${PN} += "${system_unitdir}/mypackage.service"

配方结构

recipes-mypackage/mypackage/
├── mypackage
│   └── mypackage.service
└── mypackage_git.bb

1 directory, 2 files

服务文件

注意:mypackage 具有使用 -d 选项作为守护进程运行的功能

[Unit]
Description=mypackage service

[Service]
Type=simple
ExecStart=/usr/bin/mypackage -d

[Install]
WantedBy=multi-user.target

构建配置

图像配方继承core-image-base并包含

IMAGE_FEATURES += "package-management"
PACKAGE_CLASSES ?= "rpm deb package_deb"
DISTRO_FEATURES_append = " systemd"
VIRTUAL-RUNTIME_init_manager += "systemd"
inherit extrausers

local.conf 内容

MACHINE = "raspberrypi3-64"
ENABLE_UART = "1"
RPI_USE_U_BOOT = "1"
GPU_FREQ = "250"

我可能在配方中搞砸了很多东西,所以需要一些指针来清理配方并解决问题。

谢谢。

【问题讨论】:

    标签: linux embedded-linux yocto systemd openembedded


    【解决方案1】:

    system_unitdir 替换为systemd_system_unitdir

    SYSTEMD_PACKAGES 已经包含${PN},所以你可以忽略它,FILES_${PN} += "${systemd_system_unitdir}/mypackage.service"systemd.bbclass 找到你的单位一样,它会自动添加到适当的FILES_

    参考https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/systemd.bbclass#n4 https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/systemd.bbclass#n109 https://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/systemd.bbclass#n148

    为了完整起见,感谢@Jussi Kukkonen 的评论,在{systemd_system_unitdir} 之前缺少$ 符号。

    【讨论】:

    • 我仍然遇到同样的错误,我已删除 SYSTEMD_PACKAGES = "${PN}"FILES_${PN} += "${system_unitdir}/mypackage.service" 并将 system_unitdir 替换为 systemd_system_unitdir 。现在我怀疑我的构建中可能存在一些配置问题。查看主要帖子以获取更新的详细信息。
    • ${D}{system_unitdir} 也缺少一个“$”:${D}${system_unitdir}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    相关资源
    最近更新 更多