robots: noindex
ffx repository server
命令可在主机上启动和管理 Fuchsia 软件包服务器。
概念
几乎所有在 Fuchsia 上运行的软件都会收集到 Fuchsia 软件包中。Fuchsia 软件包是一个分层文件集合,用于向 Fuchsia 系统提供一个或多个程序、组件或服务。Fuchsia 软件包是一个术语,表示分发单元,但与许多其他软件包系统不同,该单元由多个部分组成,而非单个二进制 BLOB。
除了构成 Fuchsia 平台基础的核心软件包之外,您还可以从 Fuchsia 软件包服务器下载其他软件包。Fuchsia 软件包服务器是一个 HTTP(S) 服务器,使用 TUF(更新框架)管理 Fuchsia 软件包。此框架使用经过加密签名的 BLOB 将更新后的软件包安全地分发到运行 Fuchsia 的设备。
对于使用 Fuchsia 的开发者,系统提供了一个软件包服务器,可帮助处理用作产品基础的软件包,以及在开发周期内本地编译的叠加软件包。
启动软件包服务器
软件包代码库服务器由运行 ffx repository server
的子命令控制。此服务器会处理有关可用软件包的元数据请求,并传送构成软件包内容的文件 Blob。
基本命令
ffx repository server start
服务器选项
--address
软件包服务器监听请求的地址。地址的格式可以是 IPv4 地址或 IPv6 地址。例如 [::]:8083
或 127.0.0.1:8083
。传统上,软件包服务器的首选端口为 8083
。不过,我们会努力通过将默认端口 0
设为指示使用动态端口来提高灵活性。运行 ffx repository server list
可查看正在运行的代码库服务器的地址。
没有任何配置属性会影响地址选项。由于多个服务器的端口号必须是唯一的,因此无法配置此选项。
改用动态端口是为了避免出现端口正在使用错误。使用本地连接的设备或模拟器在本地运行软件包服务器时,ffx 可以在内部管理软件包服务器的地址。
不过,在某些情况下,应使用特定网络地址根据目标设备的网络连接提供软件包。例如,当需要使用非 ffx 命令进行隧道或防火墙配置时,需要指定端口才能与这些其他工具中的配置匹配。
--background、--daemon、--foreground
软件包服务器的执行模式。这些选项是互斥的;一次只能使用一种执行模式。
--background
表示软件包服务器将在后台启动。此值与--foreground
和--daemon
互斥。--daemon
表示软件包服务器将作为 ffx 守护程序的一部分启动。此模式应被视为已废弃,仅在无法使用--background
或--foreground
时才应使用。在弃用和移除完成之前,--daemon
是默认模式,以确保向后兼容性。注意:如果您必须使用--daemon
,请提交问题,说明缺少的功能,以便改进软件包服务器。--foreground
表示软件包服务器将在前台启动。这与--background
和--daemon
互斥。
没有任何配置属性会影响执行模式。软件包服务器的执行模式会导致开发者工作流出现许多问题,有时是很微小的问题。
开发者可以根据界面上软件包服务器位于前台还是后台的具体情况,选择相应的偏好设置。无论处理模式如何,服务器行为都是相同的。
这些是特定的开关,而不是具有枚举值的选项,因此可以通过命令行分析来收集数据洞见。开关会显示在分析中,但选项的值不会显示。
由于 SDK 的默认行为是运行基于守护程序的软件包服务器,因此这是目前的默认设置。默认情况下,软件包服务器会迁移到前台,因此很明显,软件包服务器正在运行,并且是最简单的执行模型。
后台是远程工作流的理想模式,因此可以只有一个远程终端窗口,而对于 VS Code 等 IDE,在多个终端窗口之间切换的用户体验并不容易。
--repo-name
按名称唯一标识软件包服务器。如果有其他软件包服务器正在使用相同的名称运行,则新软件包服务器将会失败并报错。
默认值为 devhost。主要是由于历史原因。
没有会影响 repo-name
的配置属性;服务器名称必须是唯一的。
在 --daemon
模式下,不允许使用此选项,因为代码库是使用 ffx repository add-from-pm
等其他命令进行管理的。
--repo-path
代码库根目录的路径。
此目录可以是使用 ffx repository create
初始化的代码库,也可以是产品软件包的根目录。
默认值为未定义,但可以进行配置。
可以设置配置属性 package.repository.path
。这是代码库的根目录。由于每个项目可能都有不同的代码库,因此此值应按项目设置,而不是在用户级别设置。
设置此配置属性也有益,这样其他软件包代码库工具(例如 ffx repository publish
)便会使用与软件包服务器相同的代码库路径。
发布工具也称为此值,表示开发项目环境的核心特征。
在 --daemon
模式下,不允许使用此选项,因为仓库是使用 ffx repository add-from-pm
等其他命令进行管理的。
--trusted-root
用于对代码库 TUF 元数据进行签名的根元数据的路径。
这将为此代码库建立信任根。如果 TUF 元数据未由此根元数据签名,运行此命令将导致错误。默认情况下,使用代码库中的 1.root.json。
没有任何配置属性会影响 --trusted-root
。
开发者很少使用此选项。
注册选项
这些选项会影响目标设备上的服务器注册。作为开发者提高工作效率的辅助工具,软件包服务器可以在开发设备上自行注册。以下选项会影响此注册行为。
--no-device
停用在目标设备上自动注册服务器的功能。
仅适用于 --foreground
和 --background
。
此标志最常在处理多个设备和多个项目时使用,并且默认行为是执行错误的操作。在对软件包解析进行问题排查时,此设置也很有用。
最终,为了简化软件包分发流程,此选项将成为默认选项,或者完全移除注册。此时,自动注册工作流将集成到其他命令中。
--alias
标识此代码库的软件包域名别名。
在目标设备上注册软件包服务器时会用到它,以便设置将每个 alias
网域映射到此服务器的重写规则。通过运行 ffx repository server list
列出正在运行的代码库的别名。
仅当应使用哪个软件包服务器解析软件包存在歧义时,才应使用此属性。
默认情况下,没有任何别名。
没有任何配置属性会影响 --alias
。
这通常在处理源代码项目时使用,因为项目生成的软件包必须位于“fuchsia.com”或“chromium.org”网域中,但不属于紫红色源项目。
--alias-conflict-mode
定义别名注册冲突时的解决机制。
必须是 error-out
或 replace
。
默认行为为 replace
。
没有任何配置属性会影响 --alias-conflict-mode
。
--storage-type
定义使用此注册解析的软件包的存储类型。
persistent
定义了软件包会在重新启动后保留。或者,ephemeral
定义了重新启动时软件包会丢失。
默认值为 ephemeral
。
没有会影响“--storage-type
”的配置属性。
有时,目标设备需要重新启动并保留更新后的软件包,而不是还原到上次刷写或 OTA 中包含的软件包。这在使用启动过程中使用的软件包时特别有用。
示例
在树中启动代码库
如需了解选项,请参阅 fx serve
参考文档。在实现过程中,系统会运行 ffx repository server start
。
fx serve
使用 VSCode(单个终端窗口)时启动代码库
ffx repository server start --background
或 in-tree
fx serve --background