【问题标题】:Bitbake recipe to have pre and post install actionBitbake 配方具有安装前和安装后操作
【发布时间】:2015-04-08 11:27:03
【问题描述】:

我正在为基于 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 规范)的任何想法。

【问题讨论】:

    标签: linux yocto bitbake


    【解决方案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 配方来完成此操作。

    【讨论】:

    • 不,pkg_postinst 将在创建映像时运行,在第一次启动时(如果它在创建映像时退出并出现错误代码)以及当/如果软件包安装在实时系统上。跨度>
    【解决方案2】:

    我遇到了同样的问题。请参阅 this post 了解我是如何执行安装后脚本的。希望您可以从该答案中收集到足以为您的脚本修改它。

    【讨论】:

    • 是的,后来我确实找到了相同的功能。
    猜你喜欢
    • 1970-01-01
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2020-09-30
    相关资源
    最近更新 更多