建立 Fuchsia 套件存放區

robots: noindex

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

概念

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

Fuchsia 套件存放區對應至主體機器的目錄。 處理 Fuchsia 裝置發出的要求時,Fchsia 套件伺服器會在這個目錄中尋找 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

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