创建 Fuchsia 软件包代码库

The ffx repository 命令可以在宿主机上创建和管理 Fuchsia 软件包代码库。

概念

当 Fuchsia 设备需要运行新软件或更新现有软件时, 该设备会从 Fuchsia 软件包服务器(您可以在宿主机上运行的服务)请求并下载 Fuchsia 软件包。然后,Fuchsia 软件包服务器 会从 主机上配置的Fuchsia 软件包代码库提供 Fuchsia 软件包。

Fuchsia 软件包代码库会映射到宿主机上的目录。在处理来自 Fuchsia 设备的请求时,Fuchsia 软件包服务器会在该目录中查找 Fuchsia 软件包。如果找到,软件包服务器会直接从该目录向设备提供软件包。因此,主机上的这个目录是您要存储针对目标设备的开发中 Fuchsia 软件包的位置。

创建新的 Fuchsia 软件包代码库后,您需要将该软件包代码库注册到您的 Fuchsia 设备(或多个设备),这样设备才能从该软件包代码库下载 Fuchsia 软件包。Fuchsia 设备只能从其注册的 Fuchsia 软件包代码库下载 Fuchsia 软件包。

最后,您可以将 Fuchsia 软件包服务器设置为从同一宿主机上的多个 Fuchsia 软件包代码库提供软件包,您可以为每个软件包代码库指定特定用途(例如,将稳定软件包与实验性软件包分开)。

创建软件包代码库

如需在宿主机上创建和设置新的软件包代码库,请执行以下操作:

  1. 创建新代码库:

    ffx repository create <REPOPATH>

    REPO_PATH 替换为新代码库的目录路径。

    不过,系统不会检查该目录中是否存在现有内容,因此请确保在运行此命令之前该目录不存在。

  2. (可选)设置代码库的默认名称:

    ffx repository default set <REPO_NAME>

    REPO_NAME 替换为软件包代码库的名称,例如:

    ffx repository default set my-repo
    

    通常不需要这样做,因为 ffx 的 build 目录级配置已包含正确的值。

    设置默认代码库后,此命令会静默退出,不输出任何内容。

启动 Fuchsia 软件包服务器

如需能够从宿主机上的 Fuchsia 软件包代码库提供软件包,必须在该机器上运行 Fuchsia 软件包服务器。

如需启动新的 Fuchsia 软件包服务器,请运行以下命令:

ffx repository server start --foreground  --repo-path <REPO_PATH>

REPO_PATH 替换为宿主机上产品软件包的路径,例如:

$ ffx repository server start --foreground  --repo-path ~/my-product-bundle

另请注意,此命令会在前台 (--foreground) 启动软件包服务器。这意味着服务器的日志消息将输出到终端窗口。或者,您可以使用 --background 选项在后台启动软件包服务器。在这种情况下,日志消息将存储在 ${log.dir}/repo-REPO_NAME.log 文件中。如需了解更多选项, 请参阅启动软件包服务器

使用产品软件包启动 Fuchsia 软件包服务器

如需从现有产品软件包提供软件包,您需要下载该产品软件包并使用该产品软件包启动软件包服务器。

请执行以下操作:

  1. 查看可用产品列表:

    ffx product list
  2. 下载所需的产品软件包:

    ffx product download <PRODUCT> <DOWNLOAD_DIR>

    替换以下内容:

    • PRODUCT_NAME:目标 Fuchsia 设备的产品名称。
    • DOWNLOAD_DIR:您要下载产品软件包的目录。

    例如:

    S ffx product download core.x64 ~/Downloads/product-bundles/
    
  3. 启动 Fuchsia 软件包服务器:

    ffx repository server start --background --product-bundle <DOWNLOAD_DIR>

    DOWNLOAD_DIR 替换为包含产品软件包的目录,例如:

    $ ffx repository server start --background  --product-bundle ~/Downloads/product-bundles
    

    您可以通过检查目录中是否存在 product.bundle.json 文件来确认它是否为产品软件包目录。如需了解详情,请参阅 启动软件包服务器

将软件包代码库注册到 Fuchsia 设备

软件包服务器运行后,您需要将服务器地址注册到目标设备。

请执行以下操作:

  1. 让 Fuchsia 设备能够连接到新代码库:

    ffx target repository register [-r <REPO_NAME>] --alias fuchsia.com --alias chromium.org

    REPO_NAME 替换为您希望 Fuchsia 设备连接到的代码库的名称。

    如果未指定 -r 标志,该命令会选择默认代码库。 例如,此命令会将当前的 Fuchsia 设备设置为连接到 fuchsia.com 上的默认代码库 (my-repo):

    $ ffx target repository register --alias fuchsia.com --alias chromium.org
    

    注册代码库后,此命令会静默退出,不输出任何内容。

  2. 验证新代码库是否已注册:

    ffx target repository list

    此命令会输出类似于以下内容:

    $ ffx target repository list
    REPO                  URL                              ALIASES
    fuchsia-pkg://default ["http://10.0.2.2:8083/my-repo"] ["fuchsia.com", "chromium.org"]
    

取消注册软件包代码库

如需从设备取消注册 Fuchsia 软件包代码库,请运行以下命令:

ffx target repository deregister [-r <REPO_NAME>]

REPO_NAME 替换为已注册代码库的名称,例如:

$ ffx target repository deregister -r my-repo

如果未指定 -r 选项,该命令会选择默认代码库。

停止 Fuchsia 软件包服务器

如需停止正在运行的 Fuchsia 软件包服务器,请运行以下命令:

ffx repository server stop

此命令会输出类似于以下内容:

$ ffx repository server stop
server stopped

如需了解更多选项,请参阅 停止运行软件包服务器