0

我试图在构建系统期间将 .tar.gz 文件解压缩到我的根目录,但由于我不清楚的原因,它不起作用。我以与 meta 中的其他配方相同的方式进行操作(效果很好),但在这种情况下,我在目标系统 root 中有一个空目录。该配方与 tar.gz 同名。

根据Yocto 项目文档和我的其他经验,它应该可以正常工作。我试图手动删除tmpsstate-cache目录并重建系统,但它没有改变任何东西。配方正在构建中,但/my-app为空。我可以强制提取我的存档吗?

树文件:

├── meta-my
│   └── recipe-my-app-files
│       └── my-app
|           └── my-app.bb
│           └── files
│               ├── my-app.tar.gz
....

我的应用程序.bb

DESCRIPTION = "My Application package preinstall"

FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
RDEPENDS_my-app="bash qtdeclarative qtbase"
DEPENDS = "bash"

FILES_${PN} += "/my-app"

SRC_URI = "file://my-app.tar.gz"

BB_STRICT_CHECKSUM = "0"

S = "${WORKDIR}"

do_install() {
        # Create directories
        install -d ${D}/my-app
}

4

1 回答 1

1

正如您提供的链接中提到的那样:

unpack 调用会自动解压缩并解压缩带有“.Z”、“.z”、“. gz ”、“.xz”、“.zip”、“.jar”、“.ipk”、“.rpm”的文件。“.srpm”、“.deb”和“.bz2”扩展名以及tarball扩展名的各种组合。

它会自动提取.gz${WORKDIR}.

您的食谱的问题是您正在创建/my-app但没有用任何内容填充它。

请记住,压缩文件在 下解压缩${WORKDIR},因此将其安装到${D}/my-app

do_install(){
     # Create directories
     install -d ${D}/my-app

     # Install unpacked application
     # install -m 0755 app ${D}/my-app
     # ...
}

我不知道您的应用程序的内容,因此请根据它进行更改。

于 2022-03-02T15:57:16.923 回答