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 個標籤,順序不限:

  • 十進位 (09)
  • 小寫英文字母 (az)
  • 連字號 (-)

不得使用其他字元。

主機名稱的總長度上限為 253 個字元 (含點號)。

存放區根驗證 (已知來源)

存放區的根角色 (一或多個公開或私密金鑰組的仲裁) 會建立信任鏈,讓套件的真實性、完整性和更新間隔可以經過加密驗證。根角色簽署了較有限角色的金鑰,之後會用於簽署套件中繼資料和目標。詳情請參閱 TUF 安全性TUF 角色與中繼資料

如要驗證套件的真實性,您必須驗證下載該套件的來源存放區。

如要實作這項操作,請維護一份已知來源存放區清單,以及其中的公開金鑰。系統會拒絕來源不明的套件,不過在某些建構類型中,您可以在執行階段新增存放區。

語法

必要

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

範例

fuchsia-pkg://fuchsia.com

套件名稱

套件名稱是一種用來識別套件的符號標籤。套件名稱用於尋找存放區內的套件中繼資料。套件中繼資料必須由存放區根目錄信任的角色簽署。

套件名稱是由最多 255 個以下 latin-1 字元的序列組成,依任意順序排列:

  • 十進位 (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

套件雜湊

套件雜湊是套件中繼.far 的 merkleroot。套件的中繼資料會對套件檔案的內容位址進行編碼,因此對套件中繼資料或內容的任何變更都會產生不同的套件雜湊,因此可以區分套件的每個不重複修訂版本。

如果缺少套件雜湊,套件解析器會從用戶端可用的最新套件修訂版本擷取資源。

套件雜湊是以十六進位編碼字串表示,由下列 64 個字元組成,分別是數字 (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