Linux Bitbake配方具有安装前和安装后操作

Linux Bitbake配方具有安装前和安装后操作,linux,yocto,bitbake,Linux,Yocto,Bitbake,我正在为一个基于Makefile的项目编写Bitbake的定制配方。我们可以创建包含所有文件的RPM,但我们无法找到安装前和安装后操作的方法。 由于应用程序作为服务运行,我们希望在预安装步骤中停止它,然后在安装后步骤中启动它。 但我无法找到同样的想法来实现它。 下面是我们为它编写的样本配方 DESCRIPTION = "Simple helloworld application" SECTION = "examples" LICENSE = "MIT" LIC_FILES_CHKSUM = "f

我正在为一个基于Makefile的项目编写Bitbake的定制配方。我们可以创建包含所有文件的RPM,但我们无法找到安装前和安装后操作的方法。 由于应用程序作为服务运行,我们希望在预安装步骤中停止它,然后在安装后步骤中启动它。 但我无法找到同样的想法来实现它。 下面是我们为它编写的样本配方

DESCRIPTION = "Simple helloworld application"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PR = "r0"
SRC_URI = "file://helloworld.c"
DEPENDS = "boost"
S = "${WORKDIR}"
do_compile() {
    ${CC} helloworld.c -o helloworld
}

PACKAGES = "helloworld"
do_install() {
     install -d ${D}${bindir}
     install -m 0755 helloworld ${D}${bindir}
     install -d ${D}${sysconfig}/init.d
     install -m 0755 ${S}/service ${D}${sysconfig}/init.d
}
我确实看到了INITSCRIPT_包和INITSCRIPT_参数,但它们的描述并没有提到操作前和操作后。
因此,有没有考虑将%pre和%post(根据RPM规范)用于此目的。

我遇到了同样的问题。有关如何完成安装后脚本的信息,请参见。希望您能从这个答案中收集到足够的信息,以便为您的脚本修改它。

您可以在.bb中添加安装后脚本:

 pkg_postinst_PACKAGENAME() {
 #!/bin/sh -e
 # Commands to carry out
 }
参考:第5.3.16节


根据文档,示例仅在图像创建期间运行。还有另一个函数只会在第一次引导时运行(而不会在第一次引导后运行)。它使用
meta/recipes devtools/run postinst
recipe来实现这一点。

是的,稍后我会找到相同的功能。否,pkg_postinst将在映像创建时、首次启动时(如果在映像创建时退出并带有错误代码)以及在实时系统上安装包时运行。