创建 Fuchsia 软件包代码库

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

概念

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

Fuchsia 软件包代码库会映射到主机上的目录。处理来自 Fuchsia 设备的请求时,Fucsia 软件包服务器会在此目录中查找 Fuchsia 软件包,找到后,它会从该目录中提供软件包。因此,该目录通常是您要生成和存储与开发相关的 Fuchsia 软件包的目标位置。

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

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

创建软件包代码库

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

  1. 创建新代码库:

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

    替换以下内容:

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

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

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

    创建新的代码库后,此命令将静默退出,而不显示任何输出。

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

    ffx repository list
    

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

    $ ffx repository list
    +----------+------+--------------------------------------------------------+
    | NAME     | TYPE | EXTRA                                                  |
    +==========+======+========================================================+
    | my-repo* | pm   | /usr/alice/my-fuchsia-packages                         |
    +----------+------+--------------------------------------------------------+
    
  3. 将新代码库设置为默认代码库:

    ffx repository default set <REPO_NAME>
    

    REPO_NAME 替换为代码库名称。

    以下示例命令将 my-repo 设置为默认代码库:

    $ ffx repository default set my-repo
    

    设置默认代码库后,此命令将静默退出,而不显示任何输出。

    要让 Fuchsia 设备停止从这个新代码库下载 Fuchsia 软件包,您需要向设备注册此代码库

在 Fuchsia 设备上注册软件包代码库

如需使 Fuchsia 设备能够从主机上的 Fuchsia 软件包代码库下载软件包,请执行以下操作:

  1. 启用您的 Fuchsia 设备以连接到新的代码库:

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

    REPO_NAME 替换为您希望 Fuchsia 设备连接到的代码库的名称。如果未指定此标志,该命令会选择默认代码库。

    以下示例将您当前的 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    | TARGET                 |
    +=========+========================+
    | my-repo | fuchsia-f80f-f974-a123 |
    |         |   alias: chromium.org  |
    |         |   alias: fuchsia.com   |
    +---------+------------------------+
    

取消注册软件包代码库

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

ffx target repository deregister [-r <REPO_NAME>]

REPO_NAME 替换为已注册的代码库的名称。如果未指定此标志,该命令会选择默认代码库。

以下示例命令会取消注册 my-repo 代码库:

$ ffx target repository deregister -r my-repo

取消注册代码库后,此命令将静默退出,而不显示任何输出。

移除软件包代码库

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

ffx repository remove <REPO_NAME>

REPO_NAME 替换为代码库名称。

以下示例命令会移除 my-repo 代码库:

$ ffx repository remove my-repo

移除代码库后,此命令将静默退出,而不显示任何输出。

启动 Fuchsia 软件包服务器

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

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

ffx repository server start

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

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

停止 Fuchsia 软件包服务器

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

ffx repository server stop

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

$ ffx repository server stop
server stopped