创建 Fuchsia 软件包代码库

robots:noindex

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

概念

当 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

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

为基于守护程序的软件包服务器创建软件包仓库

如需在宿主机上创建新的 Fuchsia 软件包仓库,请执行以下操作:

  1. 创建新仓库:

    ffx repository create <REPO_PATH>
    

    其中 REPO_PATH 是新代码库的目录路径,例如:

    $ ffx repository create ~/my-fuchsia-packages
    

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

  2. 将新代码库添加到 ffx 配置中:

    ffx repository add-from-pm <PM_REPO_PATH> [-r <REPO_NAME>]
    

    请替换以下内容:

    • PM_REPO_PATH:存储 Fuchsia 软件包的目录的路径。
    • REPO_NAME:新代码库的用户定义名称。如果未指定 -r 选项,该命令会默认将新仓库命名为 devhost

    以下示例命令会创建一个新代码库并将其命名为 my-repo

    $ ffx repository add-from-pm ~/my-fuchsia-packages -r my-repo
    

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

  3. 验证是否已创建新的代码库:

    ffx repository list
    

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

    $ ffx repository list
    NAME                TYPE       ALIASES     EXTRA
    my-repo             pm                     /usr/alice/my-fuchsia-packages
    
  4. (可选)将新代码库设置为默认代码库:

    ffx repository default set <REPO_NAME>
    

    REPO_NAME 替换为仓库的名称,例如:

    $ ffx repository default set my-repo
    

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

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

    如需让 Fuchsia 设备开始从这个新仓库下载 Fuchsia 软件包,您需要将此仓库注册到设备

启动基于守护程序的软件包服务器

如需启动基于 ffx 守护程序的 Fuchsia 软件包服务器,请运行以下命令:

ffx repository server start --daemon

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

$ ffx repository server start --daemon
server is listening on [::]:8083

如需了解更多选项,请参阅启动软件包服务器

移除基于守护程序的软件包服务器的软件包代码库

如需移除 Fuchsia 软件包仓库,请运行以下命令:

ffx repository remove <REPO_NAME>

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

$ ffx repository remove my-repo

移除代码库后,此命令将静默退出,没有输出。