用于安装deb包的bitbake配方

问题描述 投票:2回答:1

我想在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包的正确方法。

yocto bitbake
1个回答
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,这不是。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.