概览
几乎所有在 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
、--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”网域,但不是 是 fuchsia 源项目的一部分。
--alias-conflict-mode
定义别名注册冲突时的解决机制。
必须是 error-out
或 replace
。
默认行为是 replace
。
没有会影响“--alias-conflict-mode
”的配置属性。
--storage-type
定义使用此注册解析的软件包的存储类型。
persistent
定义软件包在重新启动后保持不变。或者
ephemeral
定义重新启动时软件包会丢失。
默认值为 ephemeral
。
没有会影响“--storage-type
”的配置属性。
有时,目标设备需要重新启动并保持更新 而不是还原到上次刷写或 OTA 中包含的软件包。 在使用 启动过程
示例
启动树内代码库
如需了解相关选项,请参阅:fx Serving 参考文档。作为
实现的 ffx repository server start
会运行。
fx serve
使用 VSCode(单终端窗口)时启动代码库
ffx repository server start --background
或树内结构
fx serve --background