软件包

软件包是 Fuchsia 系统上的安装单元。本文档介绍了 用于构建和安装软件包的各种工作流。

工作流程如下:

如需了解详情,请参阅来自 ffx package build help 的帮助消息: 和 ffx repository publish help

构建软件包

如需构建软件包,请执行以下操作:

  1. 创建一个 meta 目录:

    mkdir -p PACKAGE_DIR/meta
    

    PACKAGE_DIR 替换为软件包所在的暂存目录 生成式 AI 模型。

  2. 设置 $META_PACKAGE_FILE 环境变量:

    export META_PACKAGE_FILE=PACKAGE_DIR/meta/package
    
  3. 打开文本编辑器,然后使用以下代码创建 $META_PACKAGE_FILE 文件: 以下内容:

    {
      "name": "<intended name of your package here>",
      "version": "0"
    }
    

    目前版本号必须为 0

  4. 保存文件并关闭文本编辑器。

  5. 创建一个软件包 build 清单文件 ($BUILD_MANIFEST_FILE), 用于提供所有软件包内容文件的路径,并导出 路径:

    export BUILD_MANIFEST_FILE=BUILD_MANIFEST_FILE
    

    清单文件中的每一行都映射到文件包中包含的一个文件,并且 格式为 destination=source,其中:

    • destination 是最终软件包中文件的路径。
    • source 是主机上文件的路径。

    清单文件必须至少包含一行与软件包 ID 文件对应的行, 例如:

    meta/package=/path/to/meta/package
    

    要添加到软件包的其他文件必须列在 build 中 创建清单文件

  6. 转到 PACKAGE_DIR 目录:

    cd PACKAGE_DIR
    
  7. 生成软件包清单文件,用于创建软件包元数据归档 PACKAGE_DIR/meta.far

    ffx package build $BUILD_MANIFEST_FILE -o PACKAGE_DIR --api-level HEAD
    

    此命令隐式创建软件包清单文件,如下所示: PACKAGE_DIR/package_manifest.json

    请注意,--api-level 最好用于特定 API 级别(由数字参数指定)。在本示例中,我们使用 HEAD,即 最新开发中的 API

  8. 设置 $PACKAGE_MANIFEST_FILE 环境变量:

    export PACKAGE_MANIFEST_FILE="PACKAGE_DIR/package_manifest.json"
    

    如果软件包的内容发生更改,您需要重新运行 ffx package build $BUILD_MANIFEST_FILE 命令。

  9. 创建一个文件包归档,将所有文件包内容收集到 单个可分发文件:

    ffx package archive create -o "PACKAGE_DIR/PACKAGE_NAME.far" "$PACKAGE_MANIFEST_FILE"
    

    PACKAGE_NAME 替换为软件包的预期名称。

    此命令将软件包归档创建为 PACKAGE_NAME.far

  10. 设置 $PACKAGE_ARCHIVE 环境变量:

    export PACKAGE_ARCHIVE=PACKAGE_DIR/PACKAGE_NAME.far
    

    如果软件包的内容发生更改,您需要重新运行 ffx package buildffx package archive create 命令。

您已成功构建软件包。现在,您可以发布软件包了。

发布软件包

如需发布软件包,请执行以下操作:

  1. 初始化充当软件包代码库的目录:

    ffx repository create REPO
    

    这会在 REPO 目录下创建一个目录结构, 可以发布软件包了

  2. 将软件包清单发布到代码库:

    ffx repository publish --package $PACKAGE_MANIFEST_FILE REPO
    

    ffx repository publish 解析 $PACKAGE_MANIFEST_FILE 并发布 软件包位于提供的 REPO 目录中。

    --package 参数可以重复使用。如果多次运行此命令 多个不同的软件包清单,每个实例都会发布到 相同的代码库您可以使用以下命令发布同一软件包的新版本: 同一命令

  3. (可选)将软件包归档发布到代码库:

    ffx repository publish --package-archive $PACKAGE_ARCHIVE REPO
    

    ffx repository publish 解析 $PACKAGE_ARCHIVE 并发布 软件包位于提供的 REPO 目录中。

    --package-archive 参数可以重复使用。如果运行此命令 多次归档不同的文件包归档,每个实例都会 发布到同一代码库同一软件包的新版本 使用相同的命令进行发布

您已成功发布文件包。现在,您可以安装 软件包。

安装软件包

如需安装软件包,请执行以下操作:

  1. 启动软件包服务器并将仓库提供给目标:

    ffx repository serve --repository "REPO_NAME" --repo-path "REPO"
    

    默认情况下,此命令会在宿主机上启动代码库服务器,并监听 端口 8083。这会以更新形式将仓库引入目标 来源。--repository "REPO_NAME" 是可选的,但很有用。

  2. (在目标设备上)检查已配置的代码库:

    pkgctl repo -v
    

    您应该会看到一个已配置的代码库,其中列出了 变量)的代码库网址 "repo_url": "fuchsia-pkg://<REPO_NAME>"

  3. (在目标设备上)下载软件包:

    pkgctl resolve fuchsia-pkg://REPO_NAME/PACKAGE_NAME
    

    如果系统中尚不存在此组件,pkgctl 会下载 打包并将 blob 在解析过程中放入 blobFS 中。如果 该软件包已存在,系统会下载更新。

您已成功安装或更新软件包。您现在可以 运行已安装软件包中的组件。

运行已安装的软件包中的组件

如需运行该组件,请使用 ffx component run 工具。如需帮助,请访问:ffx component run --help

对于 url 参数,请提供以下形式的网址: fuchsia-pkg://<REPO_NAME>/<PACKAGE_NAME>#meta/<COMPONENT_NAME>.cm