【问题标题】:bitbake recipe for installing deb package安装 deb 包的 bitbake 配方
【发布时间】:2017-12-20 08:20:37
【问题描述】:

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

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 包的正确方法是什么。

【问题讨论】:

  • 如果我记得,Debian 软件包与 yocto .deb 软件包不兼容。所以你必须用 Yocto 生成你自己的包,然后像所有其他包一样使用IMAGE_INSTALL 添加它。

标签: yocto bitbake


【解决方案1】:

安装预编译的 .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/to/your/recipe/files 文件夹中。记住:永远不要在 yocto 中使用绝对路径! 然后在 do_install 函数中调用 dpkg 将您的 .deb 文件安装到包的部署目录中。此代码不完整,因为在成功安装的情况下(不要忘记解决冲突),您将获得已安装但未包含在任何软件包中的文件和目录的列表。您需要将FILES_${PN} 变量添加到您的食谱中:

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

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

【讨论】:

  • 有一个选项可以关闭解包。只需将SRC_URI 附加到;unpack=0。比压缩依赖项简单得多,因此 bitbake 可以撤消它。
  • 请您详细说明为什么an awful decision 使用预构建的软件包?
  • 为了武装你可以使用dpkg选项'--force architecture'
  • 有人可以将此脚本转换为当前语法吗? bitbake 抱怨它使用了一些旧的覆盖语法。我,卡住了……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
  • 2015-04-08
  • 1970-01-01
  • 2013-12-29
  • 2015-02-10
  • 2020-06-22
  • 1970-01-01
相关资源
最近更新 更多