【问题标题】:write systemd script for influxdb for a yocto build为 yocto 构建的 influxdb 编写 systemd 脚本
【发布时间】:2018-04-30 15:22:31
【问题描述】:

我有一个应用程序,我希望在 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/sources/poky/../meta-umg/recipes-go/go/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

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

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

更新1

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:

【问题讨论】:

  • 你使用哪个版本的 Yocto?
  • 也许使用这个meta-influx 叉子?如果您没有 influxd 和 influx 二进制文件/脚本,则需要检查 bitbake -e github.com-influxdata-influxdb | grep ^FILES 并检查 oe-pkgdata-util 工具以查看它们的安装位置。您还可以浏览图像文件夹中的文件的配方构建文件夹。
  • @Nayfe 我之前使用的是你提到的分叉,但它没有在我的主机上编译,因此恢复到主仓库。我将研究版本和上述检查。
  • @Nayfe Yocto 内核版本4.1.36-phy3 内核名称linux-mainline 和Bitbake 版本1.30.0
  • 能否给出以下命令oe-pkgdata-util list-pkg-files -p github.com-influxdata-influxdb的结果?

标签: embedded-linux yocto systemd influxdb


【解决方案1】:

您需要附加 influxd 配方并在其中创建一个包含 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:我假设您的 influxd 配方名称是 influxd,如果您使用的是 github.com-influxdata-influxdb.bb,则需要创建 github.com-influxdata-influxdb.bbappend

【讨论】:

  • 嗨,所以这在我的meta-influx 文件夹中?还是在meta-yogurt 文件夹中的.bbappend 文件中?
  • 你要自己创建层,详情可以看here。您还可以从 meta-influx 修改原始配方,然后发送拉取请求以获取您的更改上游。
  • 主仓库已经死了很长时间了。也许我会创建meta-mytest 层,然后创建github.com-influxdata-influxbb.bbappend 来创建您上面提到的文件。还是我应该采取其他明智的做法?
  • 不,bbappend 没问题
  • 问题是,对于 Yocto 构建来说,在识别 github.com-influxdata-influxdb 的实际含义方面是否会有任何问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2018-11-12
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多