Systemd
用於 systemd USER 服務的 Yocto 配方
我正在嘗試創建一個 yocto 配方以添加一個以啟用 systemd 使用者服務。
問題是,由於該服務安裝在 systemd/user 中,使用 bitbake 我收到此錯誤:
錯誤:mediumlevel-service-1.0-r0 do_package:SYSTEMD_SERVICE_mediumlevel-service 值 mediumlevel.service 不存在
我的食譜是:
SUMMARY = "Launch mediumlevel at boot" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit systemd SRC_URI = "file://mediumlevel.service \ " S = "${WORKDIR}" SYSTEMD_SERVICE_${PN} = "mediumlevel.service" do_install() { install -d ${D}${systemd_user_unitdir} install -m 0644 ${WORKDIR}/mediumlevel.service ${D}${systemd_user_unitdir} } FILES_${PN} += "/usr/lib/systemd/user" REQUESTED_DISTRO_FEATURES = "systemd"
你怎麼看?
謝謝!
systemd.bbclass 只關心系統服務而不是使用者服務。
我想你必須做這樣的事情:
刪除 SYSTEMD_SERVICE_${PN} 變數
FILES_${PN} += "${systemd_user_unitdir}" pkg_postinst_${PN} () { #!/bin/sh -e OPTS="" if [ -n "$D" ]; then OPTS="--root=$D" fi systemctl ${OPTS} --user enable mediumlevel.service }
也許您甚至需要刪除該
inherit systemd
行,因為該類設置了 pkg_postinst。
我不知道答案是否仍然與您相關,但無論如何我還是想把它放在這裡。
我相信您的問題來自安裝步驟和軟體包的文件。我可以看到您嘗試在文件夾上安裝該服務,但這似乎不適用於 Yocto。您需要提供文件名和文件夾。在 FILE_${PN} 上也是如此。這個食譜應該更好用:
SUMMARY = "Launch mediumlevel at boot" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" inherit systemd SRC_URI = "file://mediumlevel.service \ " S = "${WORKDIR}" SYSTEMD_SERVICE_${PN} = "mediumlevel.service" do_install() { install -d ${D}${systemd_user_unitdir} install -m 0644 ${WORKDIR}/mediumlevel.service ${D}${systemd_user_unitdir}/mediumlevel.service } FILES_${PN} += "${systemd_user_unitdir}/mediumlevel.service" REQUESTED_DISTRO_FEATURES = "systems"
我希望它可以幫助你或其他人:)