编写用于yocto构建的Influxdb的systemd脚本

时间:2018-04-30 15:22:32

标签: embedded-linux yocto systemd influxdb

我有一个应用程序,我希望PHYTEC Mira board上有 InfluxDB 。我已经找到了相同的meta层,在初始构建时我成功地将其编译在船上。

启动时:

 $influxd

需要先开始然后再开始:

$ influx

运行shell InfluxDB

但我想要添加influxd.service systemd 脚本

[Unit]
Description=InfluxDB is an open-source, distributed, time series database
Documentation=https://docs.influxdata.com/influxdb/
After=network.target

[Service]
LimitNOFILE=65536
EnvironmentFile=-/etc/default/influxdb
ExecStart=/usr/bin/influxd $INFLUXD_OPTS
ExecStartPost=/bin/sh -c 'while ! influx -execute exit >& /dev/null;
do sleep 0.1;done'
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=influxd.service

但是在yocto结构中,我不知道将它放在哪里以使其可用于所有后续构建。

根据board's BSP Manual, section CAN Bus我在

中放置了上述.service脚本
meta-yogurt/recipes-core/systemd/systemd-machine-units/

文件夹

我制作了一张新照片并在启动电路板时尝试了:

  systemctl start influxd.service

但是没有这样的脚本。我试着查看电路板上的/lib/systemd/system/文件夹,看看influxd.service文件是否存在但是没有。

更新

这是当前的文件结构: 其中meta-umg是自定义图层,其中recipes-go/go/位于meta-influx layer

../sources/meta-umg/
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-go
└── go
├── files
│   └── influxd.service
└── github.com-influxdata-influxdb_%.bbappend

github.com-influxdata-influxdb_%.bbappend与@Nayfe提及的内容相同。

执行bitbake -e github.com-influxdata-influxdb后,我收到以下错误:

  

没有可用的食谱:     的/ opt / PHYTEC_BSPs / yocto_fsl /来源/狭小/../元UMG /食谱-去/去/ github.com-influxdata-influxdb _%。bbappend

我认为%无效,因为配方没有附加版本。

所以我继续将.bbappend文件的名称更改为github.com-influxdata-influxdb.bbappend

bitbake -e github.com-influxdata-influxdb | grep ^SYSTEMD_

提供

bitbake -e github.com-influxdata-influxdb | grep ^SYSTEMD_
SYSTEMD_AUTO_ENABLE="enable"
SYSTEMD_SERVICE_github.com-influxdata-influxdb="influxd.service"
SYSTEMD_PACKAGES="github.com-influxdata-influxdb"
SYSTEMD_PACKAGES_class-native=""
SYSTEMD_PACKAGES_class-nativesdk=""

bitbake-layers show-appends | grep "github.com*"
Parsing recipes..done.
github.com-influxdata-influxdb.bb:
  /opt/PHYTEC_BSPs/yocto_fsl/sources/poky/../meta-umg/recipes-go/go/github.com-influxdata-influxdb.bbappend

当我创建一个我的local.conf文件有IMAGE_INSTALL_append = " github.com-influxdata-influxdb

的图片时

SystemD脚本位于/etc/systemd/system/multi-user.wants/文件夹中,但主板上未安装守护程序influxdinflux shell命令。

我怀疑删除%符号会覆盖整个安装配方。

update1

使用oe-pkg-utils list-pkg-files -p github.com-influxdata-influxdb

添加和编译图层时,

bitbake github.com-influxdata-influxdb提供以下输出

github.com-influxdata-influxdb:
    /lib/systemd/system/influxd.service
github.com-influxdata-influxdb-dbg:
github.com-influxdata-influxdb-dev:

1 个答案:

答案 0 :(得分:0)

你需要追加涌入的食谱并在其中创建一个包含Influxd.service的文件夹。

<强> influxd _%bbappend:

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

inherit systemd

SYSTEMD_SERVICE_${PN} = "influxd.service"

SRC_URI += " \
            file://influxd.service \
           "

do_install_append () {
    # systemd
    install -d ${D}${systemd_unitdir}/system/
    install -m 0644 ${WORKDIR}/influxd.service ${D}${systemd_unitdir}/system/
}

PS:我假设您的涌入食谱名称已经涌入,如果您使用的是github.com-influxdata-influxdb.bb,则需要创建github.com-influxdata-influxdb.bbappend