Fuchsia 套件網址如下所示:
fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>
它由以下元件組成,並形成完整的套件網址:
- 網址配置:必填
- 存放區:必要
- Package name (套件名稱):必填
- 套件雜湊:選用
- 資源路徑:選用
網址配置
fuchsia-pkg
網址配置結合識別特性
建立參照存放區、套件或
視內含部分而定
語法
必要
fuchsia-pkg://<repository>[/<package-name>[?hash=<package-hash>][#<resource-path>]]
Fuchsia 套件的配置是不區分大小寫的字元 fuchsia-pkg://
。
雖然標準格式是小寫,但網址配置編碼不區分大小寫,因此 系統會處理所有情況
存放區
套件網址包含存放區「主機名稱」,用於識別套件的
來源。RFC 1123 和 RFC 5890 指定了主機名稱為點序列
(.
) 分隔的 IDNA A 標籤,每個標籤包含 1 到 63 個
接續的 latin-1 字元,順序不限:
- 數字 (
0
到9
) - 小寫字母 (
a
到z
) - 連字號 (
-
)
不得使用其他字元。
主機名稱的總長度上限為 253 個字元 (含點號)。
存放區根層級驗證 (已知來源)
存放區的根角色 (一或多個公開或私密金鑰組的代數) 建立信任鏈,讓套件的真實性、完整性和 並以加密方式驗證更新間隔。根角色簽署金鑰時 有限角色,這類角色之後可用來簽署套件中繼資料和目標 所發出的呼叫頻率請參閱 TUF 安全性和 TUF 角色和中繼資料瞭解詳情。
如要驗證套件的真實性,您必須驗證存放區 下載的檔案很真實。
做法是維護已知來源存放區清單 與裝置上的公開金鑰進行比對來源不明的套件會 可能會遭拒,但在某些建構類型中 執行程式碼
語法
必要
fuchsia-pkg://<repository>/<package-name>?hash=<package-hash>#<resource-path>
範例
fuchsia-pkg://fuchsia.com
套件名稱
套件名稱是用於識別套件的符號標籤。套件名稱為 用於尋找存放區內的套件中繼資料必須簽署檔案包中繼資料 由存放區根信任的角色執行
套件名稱包含一系列最多 255 個下列 latin-1 字元 (不限順序):
- 數字 (
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
套件雜湊
套件雜湊是套件中繼.far 的 merkleroot。由於 套件的中繼資料會編碼檔案的內容位址 變更套件的中繼資料或內容,會產生不同的套件 因此可以區分各個不重複的修訂版本 套件。
如果缺少套件雜湊,套件解析器會擷取資源 來自用戶端可用的最新套件修訂版本。
套件雜湊值是以完全由 64 組成的十六進位編碼字串表示
以下拉丁字母字元..數字 (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