ffx repository server
命令可以启动和管理
主机上的 Fuchsia 软件包服务器。
概念
几乎所有在 Fuchsia 上运行的软件都会收集到 Fuchsia 软件包中。Fuchsia 软件包具有层次结构 提供一个或多个程序、组件或服务的文件集合 发送到 Fuchsia 系统。Fuchsia 软件包是一个术语,表示一个单位的 但与许多其他软件包系统不同,该单元由 而不是单个二进制 BLOB。
除了构成 Fuchsia 平台基础的基础软件包之外, 可以从 Fuchsia 软件包服务器下载更多软件包。紫红色 软件包服务器是一个 HTTP(S) 服务器,使用 TUF( 更新框架)。此框架使用经过加密签名的 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
表示软件包服务器将在 背景。这与--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”网域中的软件包,但不属于 fuchsia 源代码项目。
--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