執行套件伺服器

總覽

基本上,在 Fuchsia 上執行的所有軟體都會收集到 Fuchsia 套件中。

Fuchsia 套件是一個階層 內含一或多個程式、元件或服務的一組檔案 導入 Fuchsia 系統。Fuchsia 套裝方案是代表 與其他許多套件系統不同 並非單一二進位 BLOB。

除了構成 Fuchsia 平台基礎套件的基本套件外, 其他套件可從 Fuchsia 套件伺服器下載。紫紅色 套件伺服器為 HTTP(S) 伺服器,使用 TUF 管理 Fuchsia 套件 ( 更新架構)。這個架構會使用經過加密編譯的 BLOB , 將更新套件安全地發布至執行 Fuchsia 的裝置。

針對使用 Fuchsia 的開發人員,系統會提供套件伺服器 協助使用可做為產品基礎的套件 也能在開發週期內疊加本機編譯的套件。

啟動套件伺服器

系統會執行 ffx repository server。這個伺服器會處理 要求取得可用套件的中繼資料,並傳送檔案 blob 組成套件內容的組成部分

基本指令

ffx repository server start

伺服器選項

--address

套件伺服器針對要求監聽的位址。格式 可以是 IPv4 或 IPv6 位址。例如: [::]:8083127.0.0.1:8083。一直以來, 套件伺服器為 8083。但為了讓彈性更大, 將預設通訊埠 0 設為使用動態通訊埠。地址 執行 ffx repository server list 即可查看執行中的存放區伺服器。

沒有任何設定屬性會影響位址選項。這個 無法設定這個選項,因為多個伺服器的通訊埠號碼必須 不得重複

改用動態連接埠的動機是避免使用通訊埠 發生錯誤。使用本機連線的裝置在本機執行套件伺服器時 ffx 可以在內部管理套件伺服器的位址。

但是在某些情況下,使用特定的網路位址時 以根據目標裝置的網路連線進行套件。舉例來說 通道或防火牆設定需要非 ffx 指令 需要通訊埠才能配合其他工具中的設定

--background--daemon--foreground

套件伺服器的執行模式。這些選項互斥,無法並用。 一次只能使用一種執行模式。

  • --background 表示系統將在 背景。且與 --foreground--daemon 互斥。

  • --daemon 表示套件伺服器將在 ffx 中啟動 Daemon此模式應視為已淘汰,只有在使用 不得使用 --background--foreground。在此之前 移除完成,--daemon 為預設模式,可確保回溯 相容性。 注意:如果必須使用 --daemon,請回報問題並解釋 因此修正套件伺服器問題。

  • --foreground 表示會在前景啟動套件伺服器。 且與 --background--daemon 互斥。

沒有任何設定屬性會影響執行模式。 套件伺服器執行模式是眾多 開發人員工作流程相關問題

開發人員會根據 UI 上的個別情況,套用不同的偏好設定 位於前景或背景的套件伺服器。伺服器行為是 兩者完全相同。

這些是特定的外接切換裝置,有些是提供列舉值的選項,方便相關人員進行深入分析 透過指令列分析收集而來在 Analytics 中 選項的值則無。

由於透過 SDK 的預設行為是執行以 Daemon 為基礎的套件伺服器, 這目前是預設值套件伺服器正在遷移至 將前景設定為預設,因此可清楚知道套件伺服器 這是最簡化的執行模型

背景是適合遠端工作流程的理想模式,因此可採用遠距方式 終端機視窗,以及 IDE 等 IDE,表示 切換多個終端機視窗並不容易。

--repo-name

依名稱識別套件伺服器。如果其他套件伺服器 以相同名稱執行作業,新的套件伺服器將會失敗並顯示錯誤。

預設值為 devhost。主要為歷史因素。

沒有任何設定屬性影響 repo-name;伺服器名稱 不得重複

--daemon 模式下,由於存放區受到代管,因此無法使用這個選項 即可使用其他指令,例如 ffx repository add-from-pm

--repo-path

存放區根目錄的路徑。

這個目錄可以是透過 ffx repository create 初始化的存放區,或 加入產品組合的根目錄

預設值為未定義,但可自行設定。

您可以設定設定屬性 package.repository.path。這是 複製到存放區的根目錄應該已設定此值 單一專案和使用者層級的資料,因為每項專案可能會有不同的 Cloud Storage 也提供目錄同步處理功能

同時為其他套件指定此設定屬性也有幫助 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」網域,但不是 為投入式專案的一部分

--alias-conflict-mode

定義別名註冊衝突時的解析機制。 必須是 error-outreplace

預設行為為 replace

沒有任何設定屬性影響 --alias-conflict-mode

--storage-type

針對使用這項註冊作業解析的套件,定義其儲存空間類型。 persistent 定義套件會在重新啟動後保留。另外 ephemeral 定義套件在重新啟動時會遺失。

預設為 ephemeral

沒有任何設定屬性影響 --storage-type

目標裝置有時會需要重新啟動並保持更新狀態 而不要還原至上次 Flash 或 OTA 中的更新。 使用在測試期間使用的套件時,這項功能特別實用 啟動程序。

範例

啟動樹狀結構內存放區

如要瞭解選項,請參閱 fx 放送參考資料。裝置 實作練習,ffx repository server start 就會執行。

fx serve

使用 VSCode (單一終端機視窗) 時啟動存放區

ffx repository server start --background

或樹狀結構內

fx serve --background