套裝內容

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

工作流程如下:

詳情請參閱來自 ffx package build helpffx 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,例如最新的 In- Development 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 格式提供網址。