啟動套件伺服器

ffx repository server 指令可以啟動及管理 主體機器上的 Fuchsia 套件伺服器

概念

基本上,在 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

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

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

  • --daemon 表示套件伺服器會在 ffx 守護程式中啟動。此模式應視為已淘汰,只有在使用 不得使用 --background--foreground。在此之前 移除完成,--daemon 為預設模式,可確保回溯 相容性。 注意:如果您必須使用 --daemon,請回報問題,說明缺少的功能,以便改善套件伺服器。

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

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

開發人員可以根據 UI 的個別情況,選擇套件伺服器在前景或背景執行。無論處理模式為何,伺服器的行為都會相同。

這些是特定切換鈕,而非具有列舉值的選項,因此可透過指令列分析收集洞察資料。分析中會顯示切換按鈕,但選項的值不會顯示。

由於透過 SDK 的預設行為是執行以守護程序為基礎的套件伺服器,因此這就是目前的預設行為。套件伺服器會以預設方式遷移至前景,因此套件伺服器正在執行,且是最簡單的執行模式。

在遠端工作流程中,背景是理想的模式,因為這樣可以保留一個遠端終端機視窗,而使用 VS Code 等 IDE 時,在多個終端機視窗之間切換的使用者體驗並不理想。

--repo-name

根據名稱識別檔案包伺服器。如果其他套件伺服器使用相同名稱,新套件伺服器會失敗並顯示錯誤。

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

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

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

--repo-path

存放區根目錄的路徑。

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

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

可以設定設定屬性 package.repository.path。這是存放區的根目錄。由於每個專案可能都有不同的存放區,因此這個值應設為每個專案,而非使用者層級。

設定這個設定屬性也有助於讓其他套件存放區工具 (例如 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 serve 參考資料瞭解選項。裝置 實作練習,ffx repository server start 就會執行。

fx serve

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

ffx repository server start --background

或樹狀結構內

fx serve --background