2015-02-08 93 views
0

我正在爲基於Makefile的項目編寫Bitbake的自定義食譜。我們可以創建包含所有文件的RPM,但是我們無法找到安裝前和安裝後操作的方式。 由於應用程序作爲服務運行,我們希望在預安裝步驟中停止它,然後在安裝後步驟中啓動它。 但我無法找到相同的想法來實現它。 下面是我們爲它編寫的示例配方。Bitbake食譜有安裝前和安裝後的動作

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

我遇到了同樣的問題。有關我如何完成安裝後腳本,請參閱this post。希望你可以從這個答案中收集足夠的信息來修改你的腳本。

+0

是的,後來我找到了相同的功能。 – Abhinav 2015-02-09 10:21:17

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配方來實現這一點。

+0

不,pkg_postinst將在映像創建時首次引導(如果在映像創建時退出時顯示錯誤代碼)以及何時/如果軟件包安裝在實時系統上,將運行pkg_postinst。 – Anders 2015-02-10 07:54:15