システム化されたUSERサービスのためのYoctoレシピ

システム化されたUSERサービスのためのYoctoレシピ

有効なシステムユーザーサービスを追加するためにyoctレシピを作成しようとしています。

問題は、サービスが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"

どう思いますか?

ありがとうございます!

ベストアンサー1

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を設定するため、その行を削除する必要があります。

おすすめ記事