【发布时间】: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 脚本,但板上未安装守护程序 influxd 和 influx 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