【问题标题】:Snap packages: What is the purpose of the "staging" and "priming" steps?快照包:“分段”和“启动”步骤的目的是什么?
【发布时间】:2017-09-19 06:23:36
【问题描述】:

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

这个过程似乎是pull -> build -> stage -> prime -> snap

据我观察,“pull”将文件放入parts/<part name>/src/文件夹,“build”将文件放入parts/<part name>/build/文件夹,“stage”将文件放入stage/文件夹,“prime”将文件放入在prime/parts/<part name>/install/ 文件夹中。

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

stage:prime: 部分允许我做哪些 install:$SNAPCRAFT_PART_INSTALL 无法实现的事情?

【问题讨论】:

    标签: snapcraft


    【解决方案1】:

    作为一个新手,我会告诉你我从一个 snapcraft.yaml 文件开始,我 打电话给 snapcraft,我得到一个快照;一步完成。

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

    1. pull 步骤按零件进行。这是使用source*sourcesource-tag 等)属性的地方。如果source 指向一个git repo,它会克隆它,等等。

    2. 构建

      build 步骤按零件进行。这是构建上一步中提取的源的位置。这是在特定于部件的目录中完成的,因此它是孤立发生的,但如果您有部件间依赖关系(使用 after 关键字告诉在构建依赖部分之前需要暂存依赖项)。

    3. 舞台

      stage 步骤按零件发生。这是构成快照的所有不同部分第一次实际放置在同一区域(“stage”目录)中。如果多个部分提供具有不同内容的同一个文件,Snapcraft 不知道您想要哪一个。 这就是stage 关键字发挥作用的地方。您可以将来自该部件的文件列入白名单或黑名单,以避免在将这些部件暂存在一起时发生冲突(或出于任何其他原因,您可能不希望这些文件在暂存区域中)。

    4. 主要

      prime 步骤也发生在每个零件上。这与stage 步骤非常相似,但文件进入启动区域而不是暂存区域。这是因为暂存区可能包含头文件和构建相关部分所需的类似内容,但可能不希望这些文件在最终快照中结束。 为此,您需要使用另一个名为 prime 的过滤关键字来为来自该部分的文件创建白名单或黑名单。

    5. 捕捉

      snap 步骤不是每个部件。此步骤在所有部件都准备好后运行,此时prime 目录包含作为快照运行所需的所有数据和元数据。这一步实际上只是为您在主要目录上调用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 文档中进一步解释。

    【讨论】:

    • 您引用的“语法文档”实际上毫无意义,对您刚刚提供的步骤没有基本的了解。谢谢!
    猜你喜欢
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-22
    • 2010-10-08
    相关资源
    最近更新 更多