Fuchsia 软件包网址如下所示:
fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>
它包含以下组成部分,这些组成部分构成了完整的软件包网址:
- 网址架构:必填
- 仓库:必需
- Package name:必填
- Package hash:可选
- 资源路径:可选
网址格式
fuchsia-pkg
网址架构将多种标识特征相结合,
建立引用代码库、软件包或
资源,具体取决于包含哪些部分。
语法
必需
fuchsia-pkg://<repository>[/<package-name>[?hash=<package-hash>][#<resource-path>]]
Fuchsia 软件包的机制是不区分大小写的字符 fuchsia-pkg://
。
虽然规范形式是小写形式,但网址架构编码不区分大小写 系统会处理所有情况
代码库
软件包网址包含一个代码库主机名,用于标识软件包的
来源。RFC 1123 和 RFC 5890 规定,主机名是一个句点序列,
(.
) 分隔的 IDNA A 标签,每个标签包含 1 到 63 个
以下拉丁-1 字符(按任意顺序):
- 数字(
0
到9
) - 小写字母(
a
到z
) - 连字符 (
-
)
不允许使用其他字符。
主机名的总长度上限为 253 个字符(包括句点)。
代码库根验证(已知来源)
代码库的根角色(一个或多个公钥或私钥对的仲裁) 建立信任链,确保软件包的真实性、完整性和 可以通过加密方式验证新鲜度根角色可为密钥签名以获取更多签名 这些角色随后用于对软件包元数据和目标进行签名 。请参阅 TUF 安全性和 如需了解详情,请参阅 TUF 角色和元数据。
如需验证软件包是否真实,您必须验证代码库 是真实的
这将通过维护已知源代码库列表来实现 公钥和私钥在设备上。来自未知来源的软件包将 可能会被拒绝,但在某些 build 类型上, 。
语法
必需
fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>
示例
fuchsia-pkg://fuchsia.com
软件包名称
软件包名称是标识软件包的符号标签。软件包名称为 用于在代码库中查找软件包元数据。必须为软件包元数据签名 由代码库根目录信任的角色管理
软件包名称由以下 latin-1 对应的序列(最多 255 个字符)组成 字符:
- 数字(
0
到9
) - 小写字母(
a
到z
) - 连字符 (
-
) - 下划线 (
_
) - 句点 (
.
)
不允许使用其他字符。
每个软件包名称在仓库中的所有软件包之间必须是唯一的。 即使软件包位于不同的代码库中 。
语法
必需
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 字符:数字(0
到 9
)和小写字母
(a
至 f
)。不允许使用其他字符。
语法
可选
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