build -> stage -> prime --6ren">
gpt4 book ai didi

snapcraft - 快照包 : What is the purpose of the "staging" and "priming" steps?

转载 作者:行者123 更新时间:2023-12-03 23:17:35 24 4
gpt4 key购买 nike

我已经成功创建并上传了一个 snap 包(教程很棒)。但是,我想知道在每个构建步骤中到底发生了什么,以及我如何利用它们。

进程好像是 pull -> build -> stage -> prime -> snap .

根据我的观察,似乎“拉”将文件放入 parts/<part name>/src/文件夹中,“build”将文件放入 parts/<part name>/build/文件夹中,“stage”将文件放入 stage/文件夹和“prime”将文件放入 prime/parts/<part name>/install/文件夹。

作为新手,我会告诉你我从 snapcraft.yaml 开始文件,我调用 snapcraft我得到了一个快照;一个步骤的过程。我知道每个“部分”都有一个 stage:prime:部分,但我不知道如何或为什么要利用这些步骤。我发现唯一有用的是 install:连同 $SNAPCRAFT_PART_INSTALL snapcraft.yaml 可用的环境变量文件。
stage:做什么的和 prime:部分允许我做 install: 无法实现的事情和 $SNAPCRAFT_PART_INSTALL ?

最佳答案

As a novice, I would tell you I start with a snapcraft.yaml file, I call snapcraft and I get a snap; a one step process.



这是公平的,如果您的快照相对简单,这可能就是您所需要的!但是您在确定生命周期步骤时是正确的:它们是有序的;

  • pull步骤发生在每个部分。这是source*的地方( sourcesource-tag 等)属性被利用。如 source指向一个 git repo,它会克隆它等等。
  • build
    build步骤发生在每个部分。这是构建上一步中拉取的源的位置。这是在特定于部件的目录中完成的,因此它是独立发生的,但是如果您有部件间的依赖关系(使用 after 关键字告诉snapcraft 在构建依赖部分之前需要暂存依赖项)。
  • 阶段
    stage步骤发生在每个部分。这是第一次将构成快照的所有不同部分实际放置在同一区域(“舞台”目录)中。如果多个部分提供具有不同内容的同一个文件,Snapcraft 不知道您需要哪一个。 这是stage的地方关键字发挥作用。您可以将来自零件的文件列入白名单或黑名单,以避免在将零件暂存在一起时发生冲突(或出于任何其他原因,您可能不希望将这些文件放在暂存区域中)。
  • 主要的
    prime步骤也发生在每个部分。这与 stage 非常相似步骤,但文件进入启动区而不是暂存区。之所以存在,是因为暂存区可能包含头文件和构建依赖部分所需的类似内容,但人们可能不希望这些文件以最终快照结束。 为此,您还有另一个过滤关键字 prime为来自要启动的那部分的文件创建白名单或黑名单。
  • 折断
    snap步骤不是每个部分。此步骤在所有部件都已准备好后运行,此时 prime目录包含作为 snap 运行所需的所有数据和元数据。这一步实际上只是调用 mksquashfs在您的主要目录上。

  • 请注意,这些生命周期步骤中的每一个都可以针对所有或单个零件单独运行,也可以对其进行清洁。
  • 为所有部分运行特定步骤:snapcraft <step> ,例如snapcraft build .
  • 为单个零件运行特定步骤:snapcraft <step> <part>
  • 清洁所有零件的具体步骤:snapcraft clean -s <step> ,例如snapcraft clean -s build
  • 单个零件的清洁特定步骤:snapcraft clean <part> -s <step> .

  • 我希望回答了你的问题。有关更多信息,请查看 Snapcraft lifecycle文档。 stageprime关键字也在 parts metadata中做了进一步的解释。文档。

    关于snapcraft - 快照包 : What is the purpose of the "staging" and "priming" steps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43556433/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com