Fuchsia 软件包网址

Fuchsia 软件包网址如下所示:

fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>

它包含以下组成部分,这些组成部分构成了完整的软件包网址:

网址格式

fuchsia-pkg网址架构将多种标识特征相结合, 建立引用代码库、软件包或 资源,具体取决于包含哪些部分。

语法

必需

fuchsia-pkg://<repository>[/<package-name>[?hash=<package-hash>][#<resource-path>]]

Fuchsia 软件包的机制是不区分大小写的字符 fuchsia-pkg://

虽然规范形式是小写形式,但网址架构编码不区分大小写 系统会处理所有情况

代码库

软件包网址包含一个代码库主机名,用于标识软件包的 来源。RFC 1123RFC 5890 规定,主机名是一个句点序列, (.) 分隔的 IDNA A 标签,每个标签包含 1 到 63 个 以下拉丁-1 字符(按任意顺序):

  • 数字(09
  • 小写字母(az
  • 连字符 (-)

不允许使用其他字符。

主机名的总长度上限为 253 个字符(包括句点)。

代码库根验证(已知来源)

代码库的根角色(一个或多个公钥或私钥对的仲裁) 建立信任链,确保软件包的真实性、完整性和 可以通过加密方式验证新鲜度根角色可为密钥签名以获取更多签名 这些角色随后用于对软件包元数据和目标进行签名 。请参阅 TUF 安全性和 如需了解详情,请参阅 TUF 角色和元数据

如需验证软件包是否真实,您必须验证代码库 是真实的

这将通过维护已知源代码库列表来实现 公钥和私钥在设备上。来自未知来源的软件包将 可能会被拒绝,但在某些 build 类型上, 。

语法

必需

fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>

示例

fuchsia-pkg://fuchsia.com

软件包名称

软件包名称是标识软件包的符号标签。软件包名称为 用于在代码库中查找软件包元数据。必须为软件包元数据签名 由代码库根目录信任的角色管理

软件包名称由以下 latin-1 对应的序列(最多 255 个字符)组成 字符:

  • 数字(09
  • 小写字母(az
  • 连字符 (-)
  • 下划线 (_)
  • 句点 (.)

不允许使用其他字符。

每个软件包名称在仓库中的所有软件包之间必须是唯一的。 即使软件包位于不同的代码库中 。

语法

必需

fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>

代码库和软件包名称之间必须有一个 / 字符。

示例

  • fuchsia-pkg://fuchsia.com/fuchsia-shell-utils
  • fuchsia-pkg://fuchsia.com/fuchsia-shell-fonts
  • fuchsia-pkg://fuchsia.com/fuchsia-shell-scenic

软件包哈希

软件包哈希是软件包 meta.far 的merkleroot。由于 文件包的元数据会对文件包文件(任何 对文件包的元数据或内容所做的更改会产生不同的文件包 这样就可以区分 软件包。

如果缺少软件包哈希,软件包解析器就会提取资源 从客户端可用的软件包的最新修订版本开始。

软件包哈希表示为一个十六进制编码字符串,该字符串正好由 64 位 以下拉丁-1 字符:数字(09)和小写字母 (af)。不允许使用其他字符。

语法

可选

fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>

仅在指定了软件包名称时有效。

必须以字符串 ?hash= 开头,后跟软件包哈希

示例

fuchsia-pkg://google.com/chrome?hash=80e8721f4eba5437c8b6e1604f6ee384f42aed2b6dfbfd0b616a864839cd7b4a#meta/webview.component

资源路径

资源路径是用于标识软件包内资源的 UTF-8 字符串。 这是一个文件路径,由一系列以 / 分隔的单个字符组成 路径段,其中每个段都是非零 UTF-8 非空序列 不等于 .../ 的字符。必须以单个 # 字符开头。

此路径必须是软件包根目录的相对路径。

根据 RFC 3986。该定义与 Fuchsia 文件系统路径的定义兼容 但会强制采用 UTF-8 编码,而不是接受任意二进制字符串 因为此类字符串不能始终编码为有效网址。

例如,hello/unicode/%F0%9F%98%81 会解码为 hello/unicode/😁

语法

可选

仅在指定了软件包的情况下有效。

fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>

示例

  • fuchsia-pkg://fuchsia.com/fuchsia-shell-utils#bin/ls
  • fuchsia-pkg://google.com/chrome#meta/webview.component
  • fuchsia-pkg://google.com/chrome#lib/mylibrary.so

构建软件包网址

您可以使用可修改的变量构建软件包网址,然后复制该网址:

fuchsia-pkg://repository/package-name?hash=package-hash#resource-path