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 软件包仓库提供服务,您可以将每个软件包仓库专用于特定用途(例如,将稳定版软件包与实验版软件包分开)。
创建软件包代码库
如需在主机上创建和设置新的软件包仓库,请执行以下操作:
创建新仓库:
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
如需了解更多选项,请参阅停止运行软件包服务器。
为基于守护程序的软件包服务器创建软件包仓库
如需在宿主机上创建新的 Fuchsia 软件包仓库,请执行以下操作:
创建新仓库:
ffx repository create <REPO_PATH>
其中
REPO_PATH
是新代码库的目录路径,例如:$ ffx repository create ~/my-fuchsia-packages
但是,系统不会检查该目录中的现有内容,因此在运行此命令之前,请确保该目录不存在。
将新代码库添加到
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
创建新代码库后,此命令会静默退出,不会输出任何内容。
验证是否已创建新的代码库:
ffx repository list
此命令会输出类似于以下内容的输出:
$ ffx repository list NAME TYPE ALIASES EXTRA my-repo pm /usr/alice/my-fuchsia-packages
(可选)将新代码库设置为默认代码库:
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
移除代码库后,此命令将静默退出,没有输出。