Yocto 安装deb包的bitbake配方

Yocto 安装deb包的bitbake配方,yocto,bitbake,Yocto,Bitbake,我想在yocto映像中安装我自己的自定义deb包。为此,我使用ROOTFS\u POSTPROCESS\u命令使用以下mydebpkg.bb配方 但是,在构建映像时,进程失败,出现以下错误:无法安装程序包mydebpkg,函数失败:do_rootfs。我犯了什么错误,安装任何deb包的正确方法是什么。安装预编译。deb是一个糟糕的决定,您应该在能够从源代码编译包的任何时候避免这样做。如果不是这样的话,我建议这样做: SUMMARY = "Recipe for installing deb pac

我想在yocto映像中安装我自己的自定义deb包。为此,我使用ROOTFS\u POSTPROCESS\u命令使用以下mydebpkg.bb配方


但是,在构建映像时,进程失败,出现以下错误:无法安装程序包mydebpkg,函数失败:do_rootfs。我犯了什么错误,安装任何deb包的正确方法是什么。

安装预编译。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中。这段代码并不完整,因为在成功安装的情况下(不要忘记冲突解决),您将获得已安装但未在任何软件包中提供的文件和目录的列表。您需要将以下内容添加到配方
文件{PN}
变量中:

FILES_${PN} += " \
    /usr/bin/some_file \
    /etc/some_config_file \
    /and_so_on \
"
您需要添加的完整列表可以从错误消息中获得。
请记住:只有当目标体系结构与主机体系结构相同时,此方法才有效。关于您使用的
STAGING\u BINDIR\u NATIVE
变量,情况就是这样,关于您的包包含
arm
,情况并非如此。

如果我记得的话,Debian包与yocto.deb包不兼容。因此,您必须使用Yocto生成自己的包,然后像使用
IMAGE\u INSTALL
的其他包一样添加它。有一个选项可以关闭解包。只需将
SRC_URI
附加上
;解包=0
。比压缩依赖项要简单得多,这样bitbake就可以撤销它。请详细说明为什么使用预构建包是一个糟糕的决定。对于构建到arm,您可以使用dpkg选项--force architecture
FILES_${PN} += " \
    /usr/bin/some_file \
    /etc/some_config_file \
    /and_so_on \
"