我正在为基于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_PACKAGES和INITSCRIPT_PARAMS,但他们的描述没有谈到前后动作。 因此,为此目的,任何考虑将%pre和%post(以RPM规格表示)放在一起的想法。
答案 0 :(得分:1)
您可以在.bb中添加安装后脚本:
pkg_postinst_PACKAGENAME() {
#!/bin/sh -e
# Commands to carry out
}
参考:第5.3.16节http://www.yoctoproject.org/docs/1.7.1/mega-manual/mega-manual.html
根据文档,示例仅在图像创建期间运行。还有另一个功能只能在第一次启动时运行(并且从不在它之后运行)。它使用meta/recipes-devtools/run-postinsts
配方来完成此任务。
答案 1 :(得分:0)
我遇到了同样的问题。有关我如何安装后安装脚本,请参阅this post。希望您可以从该答案中收集足够的内容来修改它。