建立 Fuchsia 套件存放區

ffx repository 指令可在主機上建立及管理 Fuchsia 套件存放區。

概念

當 Fuchsia 裝置需要執行新軟體或更新現有軟體時,裝置會向 Fuchsia 套件伺服器要求並下載 Fuchsia 套件,這是可以在主機上執行的服務。接著,Fchsia 套件伺服器會透過主機上設定的 Fuchsia 套件存放區提供 Fuchsia 套件。

Fuchsia 套件存放區對應至主體機器的目錄。 處理來自 Fuchsia 裝置的要求時,Fuchsia 套件伺服器會在這個目錄中尋找 Fuchsia 套件。如果有找到,套件伺服器會直接從這個目錄將套件提供給裝置。因此,建議您從主機機器上的這個目錄儲存目標裝置的開發中 Fuchsia 套件。

建立新的 Fuchsia 套件存放區後,您需要在 Fuchsia 裝置 (或裝置) 中註冊套件存放區,讓裝置可從這個套件存放區下載 Fuchsia 套件。Fuchsia 裝置只能從註冊的 Fuchsia 套件存放區下載 Fuchsia 套件。

最後,您可以設定 Fuchsia 套件伺服器,讓伺服器從同一個主機電腦上的多個 Fuchsia 套件存放區提供服務,並將每個套件存放區專門用於特定用途 (例如將穩定套件與實驗套件分開)。

建立套件存放區

如要在主機上建立及設定新的套件存放區,請按照下列步驟操作:

  1. 建立新的存放區:

    ffx repository create <REPOPATH>
    

    REPO_PATH 替換為新存放區的目錄路徑。

    不過,系統不會檢查該目錄中現有的內容,因此請先確認該目錄不存在,再執行這個指令。

  2. (選用) 設定存放區的預設名稱:

    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 套件伺服器

如要從現有產品套件提供套件,您必須下載產品套件,並使用產品套件啟動套件伺服器。

請完成下列步驟:

  1. 查看可用產品清單:

    ffx product list
    
  2. 下載想要的產品組合:

    ffx product download <PRODUCT> <DOWNLOAD_DIR>
    

    請更改下列內容:

    • PRODUCT_NAME:目標 Fuchsia 裝置的產品名稱。
    • DOWNLOAD_DIR:要下載產品套裝組合的目錄。

    例如:

    S ffx product download core.x64 ~/Downloads/product-bundles/
    
  3. 啟動 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 裝置

套件伺服器執行後,您必須將伺服器位址註冊到目標裝置。

請完成下列步驟:

  1. 讓 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
    

    註冊存放區後,這個指令會以無輸出的方式結束。

  2. 確認新的存放區已註冊:

    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 套件存放區,請執行下列操作:

  1. 建立新的存放區:

    ffx repository create <REPO_PATH>
    

    其中 REPO_PATH 是新存放區的目錄路徑,例如:

    $ ffx repository create ~/my-fuchsia-packages
    

    不過,系統不會檢查該目錄中現有的內容,因此在執行這個指令前,請確認該目錄不存在。

  2. 將新存放區新增至 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
    

    建立新存放區後,這個指令會靜默退出,不會產生任何輸出內容。

  3. 確認新存放區是否已建立:

    ffx repository list
    

    這個指令會輸出類似以下的內容:

    $ ffx repository list
    NAME                TYPE       ALIASES     EXTRA
    my-repo             pm                     /usr/alice/my-fuchsia-packages
    
  4. (選用) 將新的存放區設為預設:

    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

移除存放區後,這個指令會以無輸出內容的方式靜默退出。