用于安装deb包的bitbake配方

时间:2017-12-20 08:20:37

标签: yocto bitbake

我想在yocto图片中安装自己的自定义deb包。为此我使用 ROOTFS_POSTPROCESS_COMMAND

使用 mydebpkg.bb 配方
SUMMARY = "Recipe for installing deb package"
DESCRIPTION = "It installs own deb package"
HOMEPAGE = "" 
LICENSE = "CLOSED"

inherit bin_package

my_install_pkg_deb() {

${STAGING_BINDIR_NATIVE}/dpkg \

--root=${IMAGE_ROOTFS}/ --admindir=${IMAGE_ROOTFS}/var/lib/dpkg/  \

-i /home/pi1/install/own_1.3-07u_armhf.deb

}

ROOTFS_POSTPROCESS_COMMAND +=  "my_install_pkg_deb; "

但是在构建映像时,进程失败并出现以下错误无法安装包mydebpkg 功能失败:do_rootfs 。我犯错误的地方以及安装任何deb包的正确方法。

1 个答案:

答案 0 :(得分:2)

安装预编译的.deb是一个糟糕的决定,你应该避免在你能够从源代码编译包的任何时候这样做。如果情况并非如此,我建议做这样的事情:

SUMMARY = "Recipe for installing deb package"
DESCRIPTION = "It installs own deb package"
HOMEPAGE = ""
LICENSE = "CLOSED"

DEPENDS += " dpkg-native "

SRC_URI += " \
    file://own_1.3-07u_armhf.deb.zip \
"

do_install_append() {
    touch ${STAGING_DIR_NATIVE}/var/lib/dpkg/status
    ${STAGING_BINDIR_NATIVE}/dpkg --instdir=${D}/ \
    --admindir=${STAGING_DIR_NATIVE}/var/lib/dpkg/ \
     -i ${WORKDIR}/own_1.3-07u_armhf.deb
}

所以:使用SRC_URI变量让bitbake将.deb文件复制到工作目录。我建议您将文件压缩为bitbake尝试解压缩您提供给他的所有档案,而.deb只是另一个档案。所以将它打包到zip并让bitbake将你的.deb文件带到工作目录。将.deb.zip文件放在 / path /到/ your / recipe / files文件夹中。请记住:从不在yocto中使用绝对路径! 然后在do_install函数中调用dpkg将.deb文件安装到包的deploy dir中。如果安装成功(不要忘记解决冲突),此代码不完整,您将获得已安装但未在任何软件包中提供的文件和目录列表。您需要添加到食谱FILES_${PN}变量:

FILES_${PN} += " \
    /usr/bin/some_file \
    /etc/some_config_file \
    /and_so_on \
"

您需要添加的完整列表可以从错误消息中获取。 请记住:只有当您的目标体系结构与主机体系结构相同时,此方法才有效。关于你使用STAGING_BINDIR_NATIVE变量的情况就是这样,关于你的包包含arm,这不是。