The ffx repository 命令可以在宿主机上创建和管理
Fuchsia 软件包代码库。
概念
当 Fuchsia 设备需要运行新软件或更新现有软件时, 该设备会从 Fuchsia 软件包服务器(您可以在宿主机上运行的服务)请求并下载 Fuchsia 软件包。然后,Fuchsia 软件包服务器 会从 主机上配置的Fuchsia 软件包代码库提供 Fuchsia 软件包。
Fuchsia 软件包代码库会映射到宿主机上的目录。在处理来自 Fuchsia 设备的请求时,Fuchsia 软件包服务器会在该目录中查找 Fuchsia 软件包。如果找到,软件包服务器会直接从该目录向设备提供软件包。因此,主机上的这个目录是您要存储针对目标设备的开发中 Fuchsia 软件包的位置。
创建新的 Fuchsia 软件包代码库后,您需要将该软件包代码库注册到您的 Fuchsia 设备(或多个设备),这样设备才能从该软件包代码库下载 Fuchsia 软件包。Fuchsia 设备只能从其注册的 Fuchsia 软件包代码库下载 Fuchsia 软件包。
最后,您可以将 Fuchsia 软件包服务器设置为从同一宿主机上的多个 Fuchsia 软件包代码库提供软件包,您可以为每个软件包代码库指定特定用途(例如,将稳定软件包与实验性软件包分开)。
创建软件包代码库
如需在宿主机上创建和设置新的软件包代码库,请执行以下操作:
创建新代码库:
ffx repository create <REPOPATH>将
REPO_PATH替换为新代码库的目录路径。不过,系统不会检查该目录中是否存在现有内容,因此请确保在运行此命令之前该目录不存在。
(可选)设置代码库的默认名称:
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 软件包服务器
如需从现有产品软件包提供软件包,您需要下载该产品软件包并使用该产品软件包启动软件包服务器。
请执行以下操作:
查看可用产品列表:
ffx product list下载所需的产品软件包:
ffx product download <PRODUCT> <DOWNLOAD_DIR>替换以下内容:
PRODUCT_NAME:目标 Fuchsia 设备的产品名称。DOWNLOAD_DIR:您要下载产品软件包的目录。
例如:
S ffx product download core.x64 ~/Downloads/product-bundles/启动 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 设备
软件包服务器运行后,您需要将服务器地址注册到目标设备。
请执行以下操作:
让 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注册代码库后,此命令会静默退出,不输出任何内容。
验证新代码库是否已注册:
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
如需了解更多选项,请参阅 停止运行软件包服务器。