ffx repository
指令可在主機上建立及管理 Fuchsia 套件存放區。
概念
當 Fuchsia 裝置需要執行新軟體或更新現有軟體時,裝置會向 Fuchsia 套件伺服器要求並下載 Fuchsia 套件,這是可以在主機上執行的服務。接著,Fchsia 套件伺服器會透過主機上設定的 Fuchsia 套件存放區提供 Fuchsia 套件。
Fuchsia 套件存放區對應至主體機器的目錄。 處理來自 Fuchsia 裝置的要求時,Fuchsia 套件伺服器會在這個目錄中尋找 Fuchsia 套件。如果有找到,套件伺服器會直接從這個目錄將套件提供給裝置。因此,建議您從主機機器上的這個目錄儲存目標裝置的開發中 Fuchsia 套件。
建立新的 Fuchsia 套件存放區後,您需要在 Fuchsia 裝置 (或裝置) 中註冊套件存放區,讓裝置可從這個套件存放區下載 Fuchsia 套件。Fuchsia 裝置只能從註冊的 Fuchsia 套件存放區下載 Fuchsia 套件。
最後,您可以設定 Fuchsia 套件伺服器,讓伺服器從同一個主機電腦上的多個 Fuchsia 套件存放區提供服務,並將每個套件存放區專門用於特定用途 (例如將穩定套件與實驗套件分開)。
建立套件存放區
如要在主機上建立及設定新的套件存放區,請按照下列步驟操作:
建立新的存放區:
ffx repository create <REPOPATH>
將
REPO_PATH
替換為新存放區的目錄路徑。不過,系統不會檢查該目錄中現有的內容,因此請先確認該目錄不存在,再執行這個指令。
(選用) 設定存放區的預設名稱:
ffx repository default set <REPO_NAME>
將
REPO_NAME
替換為套件存放區的名稱,例如:ffx repository default set my-repo
由於
ffx
的建構目錄層級設定已包含正確的值,因此通常不需要執行這項操作。設定預設存放區後,這個指令會靜默退出,不會顯示任何輸出內容。
啟動 Fuchsia 套件伺服器
如要在主機上提供 Fuchsia 套件存放區的套件,Fuchsia 套件伺服器必須在機器上執行。
如要啟動新的 Fuchsia 套件伺服器,請執行下列指令:
ffx repository server start --foreground --repo-path <REPO_PATH>
將 REPO_PATH
替換為主機機器上產品套件的路徑,例如:
$ ffx repository server start --foreground --repo-path ~/my-product-bundle
另請注意,這個指令會在前景 (--foreground
) 啟動套件伺服器。這表示伺服器的記錄訊息會輸出至終端機視窗。或者,您也可以使用 --background
選項在背景啟動套件伺服器。在這種情況下,記錄訊息會儲存在 ${log.dir}/repo-REPO_NAME.log
檔案中。如需更多選項,請參閱「啟動套件伺服器」。
使用產品套件啟動 Fuchsia 套件伺服器
如要從現有產品套件提供套件,您必須下載產品套件,並使用產品套件啟動套件伺服器。
請完成下列步驟:
查看可用產品清單:
ffx product list
下載想要的產品組合:
ffx product download <PRODUCT> <DOWNLOAD_DIR>
請更改下列內容:
PRODUCT_NAME
:目標 Fuchsia 裝置的產品名稱。DOWNLOAD_DIR
:要下載產品套裝組合的目錄。
例如:
S ffx product download core.x64 ~/Downloads/product-bundles/
啟動 Fuchsia 套件伺服器:
ffx repository server start --background --product-bundle <DOWNLOAD_DIR>
將
DOWNLOAD_DIR
替換為包含產品組合的目錄,例如:$ ffx repository server start --background --product-bundle ~/Downloads/product-bundles
如要確認屬於產品套件目錄,請查看目錄中是否有
product.bundle.json
檔案。詳情請參閱「啟動套件伺服器」。
將套件存放區註冊至 Fuchsia 裝置
套件伺服器執行後,您必須將伺服器位址註冊到目標裝置。
請完成下列步驟:
讓 Fuchsia 裝置連線至新存放區:
ffx target repository register [-r <REPO_NAME>] --alias fuchsia.com --alias chromium.org
將
REPO_NAME
替換為您想讓 Fusia 裝置連線的存放區名稱。如未指定
-r
旗標,指令會選取預設存放區。舉例來說,這個指令會將目前的 Fuchsia 裝置設為連線至fuchsia.com
中的預設存放區 (my-repo
):$ ffx target repository register --alias fuchsia.com --alias chromium.org
註冊存放區後,這個指令會以無輸出的方式結束。
確認新的存放區已註冊:
ffx target repository list
這個指令會輸出類似以下的輸出內容:
$ ffx target repository list REPO URL ALIASES fuchsia-pkg://default ["http://10.0.2.2:8083/my-repo"] ["fuchsia.com", "chromium.org"]
取消註冊套件存放區
如要從裝置取消註冊 Fuchsia 套件存放區,請執行下列指令:
ffx target repository deregister [-r <REPO_NAME>]
將 REPO_NAME
替換為已註冊的存放區名稱,例如:
$ ffx target repository deregister -r my-repo
如果未指定 -r
選項,指令會選取預設存放區。
停止 Fuchsia 套件伺服器
如要停止執行中的 Fuchsia 套件伺服器,請執行下列指令:
ffx repository server stop
這個指令會輸出類似以下的輸出內容:
$ ffx repository server stop
server stopped
如需更多選項,請參閱停止執行套件伺服器。
為以守護程序為基礎的套件伺服器建立套件存放區
如要在主機上建立新的 Fuchsia 套件存放區,請執行下列操作:
建立新的存放區:
ffx repository create <REPO_PATH>
其中
REPO_PATH
是新存放區的目錄路徑,例如:$ ffx repository create ~/my-fuchsia-packages
不過,系統不會檢查該目錄中現有的內容,因此在執行這個指令前,請確認該目錄不存在。
將新存放區新增至
ffx
設定:ffx repository add-from-pm <PM_REPO_PATH> [-r <REPO_NAME>]
請更改下列內容:
PM_REPO_PATH
:儲存 Fuchsia 套件的目錄路徑。REPO_NAME
:新存放區的使用者定義名稱。如未指定-r
選項,指令會依預設將新存放區命名為devhost
。
下列範例指令會建立新的存放區,並將其命名為
my-repo
:$ ffx repository add-from-pm ~/my-fuchsia-packages -r my-repo
建立新存放區後,這個指令會靜默退出,不會產生任何輸出內容。
確認新存放區是否已建立:
ffx repository list
這個指令會輸出類似以下的內容:
$ ffx repository list NAME TYPE ALIASES EXTRA my-repo pm /usr/alice/my-fuchsia-packages
(選用) 將新的存放區設為預設:
ffx repository default set <REPO_NAME>
請將
REPO_NAME
替換為存放區名稱,例如:$ ffx repository default set my-repo
由於 ffx 的建構目錄層級設定已包含正確的值,因此通常不需要這麼做。
設定預設存放區後,這個指令會靜默退出,不會顯示任何輸出內容。
如要讓 Fuchsia 裝置開始從這個新存放區下載 Fuchsia 套件,您必須將該存放區註冊至裝置。
啟動 Daemon 套件伺服器
如要啟動以 ffx
守護程為基礎的 Fuchsia 套件伺服器,請執行下列指令:
ffx repository server start --daemon
這個指令會輸出類似以下的內容:
$ ffx repository server start --daemon
server is listening on [::]:8083
如需其他選項,請參閱「啟動套件伺服器」。
移除 Daemon 套件伺服器的套件存放區
如要移除 Fuchsia 套件存放區,請執行下列指令:
ffx repository remove <REPO_NAME>
請將 REPO_NAME
替換為存放區名稱,例如:
$ ffx repository remove my-repo
移除存放區後,這個指令會以無輸出內容的方式靜默退出。