套件

套件是指 Fuchsia 系統上安裝的單位。本文件說明 建立及安裝套件的各種工作流程

工作流程如下:

詳情請參閱「ffx package build help」的說明訊息, 和 ffx repository publish help

建立套件

如何建立套件:

  1. 建立 meta 目錄:

    mkdir -p PACKAGE_DIR/meta
    

    PACKAGE_DIR 替換為套件所在的測試目錄 後續要建構的元件

  2. 設定 $META_PACKAGE_FILE 環境變數:

    export META_PACKAGE_FILE=PACKAGE_DIR/meta/package
    
  3. 開啟文字編輯器,並使用以下指令建立 $META_PACKAGE_FILE 檔案: 下列內容:

    {
      "name": "<intended name of your package here>",
      "version": "0"
    }
    

    目前版本號碼須為 0

  4. 儲存檔案並關閉文字編輯器。

  5. 建立套件建構資訊清單檔案 ($BUILD_MANIFEST_FILE), 提供所有套件內容檔案的路徑 透過變數指定路徑

    export BUILD_MANIFEST_FILE=BUILD_MANIFEST_FILE
    

    資訊清單檔案中的每一行都會對應至 套件中包含的檔案, 格式為 destination=source,其中:

    • destination 是最終套件中的檔案路徑。
    • source 是主體機器上的檔案路徑。

    資訊清單檔案必須至少包含一行,套件 ID 檔案。 例如:

    meta/package=/path/to/meta/package
    

    套件中必須列有要新增至套件的其他檔案 管理資訊清單檔案

  6. 前往 PACKAGE_DIR 目錄:

    cd PACKAGE_DIR
    
  7. 產生套件資訊清單檔案,這個檔案會建立套件中繼資料封存檔案 在 PACKAGE_DIR/meta.far

    ffx package build $BUILD_MANIFEST_FILE -o PACKAGE_DIR --api-level HEAD
    

    這個指令會以隱含形式建立套件資訊清單檔案, PACKAGE_DIR/package_manifest.json

    請注意,最好使用 --api-level 來指定特定 API 並由數字引數指定。本例使用的是 HEAD,亦即 最新的開發中 API

  8. 設定 $PACKAGE_MANIFEST_FILE 環境變數:

    export PACKAGE_MANIFEST_FILE="PACKAGE_DIR/package_manifest.json"
    

    如果套件內容有所變更,您需要重新執行 ffx package build $BUILD_MANIFEST_FILE 指令。

  9. 建立套件封存,將所有套件內容收集到 單一可散發檔案:

    ffx package archive create -o "PACKAGE_DIR/PACKAGE_NAME.far" "$PACKAGE_MANIFEST_FILE"
    

    PACKAGE_NAME 替換為指定套件的名稱。

    這個指令會以 PACKAGE_NAME.far 的形式建立套件封存檔。

  10. 設定 $PACKAGE_ARCHIVE 環境變數:

    export PACKAGE_ARCHIVE=PACKAGE_DIR/PACKAGE_NAME.far
    

    如果套件內容有所變更,您需要重新執行 ffx package buildffx package archive create 指令。

您已成功建立套件。您現在可以發布套件了。

發布套件

如何發布套件:

  1. 初始化做為套件存放區的目錄:

    ffx repository create REPO
    

    這可在 REPO 目錄下建立目錄結構, 可用於發布套件

  2. 將套件資訊清單發布至存放區:

    ffx repository publish --package $PACKAGE_MANIFEST_FILE REPO
    

    ffx repository publish 剖析 $PACKAGE_MANIFEST_FILE 並發布 所提供的 REPO 目錄中的套件。

    --package 引數可以重複出現。如果執行這項指令 每個執行個體都會發布至不同套件, 在同一個存放區中如要發布相同套件的新版本,請使用 相同的指令

  3. (選用) 將套件封存發布至存放區:

    ffx repository publish --package-archive $PACKAGE_ARCHIVE REPO
    

    ffx repository publish 剖析 $PACKAGE_ARCHIVE 並發布 所提供的 REPO 目錄中的套件。

    --package-archive 引數可以重複出現。如果您執行這項指令 而且每個套件個體都會 也會自動發布至同一個存放區同一套件的新版本 也可以使用相同指令發布內容

您已成功發布套件。您現在可以開始安裝 套件。

安裝套件

如何安裝套件:

  1. 啟動套件伺服器並將存放區提供給目標:

    ffx repository serve --repository "REPO_NAME" --repo-path "REPO"
    

    根據預設,上述指令會在主體機器上啟動存放區伺服器,監聽 通訊埠 8083。這會將存放區以更新的形式導入目標 來源。--repository "REPO_NAME" 為選用項目,但相當實用。

  2. (在目標裝置上) 檢查已設定的存放區:

    pkgctl repo -v
    

    您應該會看到已設定的存放區、清單項目和其他設定 變數) 其存放區網址 "repo_url": "fuchsia-pkg://<REPO_NAME>"

  3. (在目標裝置上) 下載套件:

    pkgctl resolve fuchsia-pkg://REPO_NAME/PACKAGE_NAME
    

    如果系統中還沒有該元件,pkgctl 會下載 ,並將 blob 置於 blobFS 中。如果 套件已存在,系統將下載更新。

您已成功安裝或更新套件。您現在已準備好 從已安裝的套件執行元件

從已安裝的套件執行元件

如要執行元件,請使用 ffx component run 工具。如需協助,請前往:ffx component run --help

如果是 url 參數,請提供格式為 fuchsia-pkg://<REPO_NAME>/<PACKAGE_NAME>#meta/<COMPONENT_NAME>.cm