共用方式為


裝置更新 apt 資訊清單

Apt 資訊清單是一個 JSON 檔案,描述 apt 更新處理常式所需的更新詳細資料。 此檔案可以匯入 IoT 中樞裝置更新,就像任何其他更新一樣。

如需詳細資訊,請參閱將更新匯入至 IoT 中樞裝置更新

概觀

當 apt 資訊清單以更新的形式傳遞至裝置更新代理程式時,代理程式會處理此資訊清單並執行必要的作業。 這些作業包括從指定的存放庫下載並安裝 apt 資訊清單檔案中指定的套件及其相依性。

裝置更新支援 apt updateType 和 apt 更新處理常式。 此支援可讓裝置更新代理程式評估已安裝的 Debian 套件,並更新必要的套件。

結構描述

Apt 資訊清單檔案是具有版本化結構描述的 JSON 檔案。

{
    "name": "<name>",
    "version": "<version>",
    "packages": [
        {
            "name": "<package name>",
            "version": "<version specifier>"
        }
    ]
}

例如:

{
    "name": "contoso-iot-edge",
    "version": "1.0.0.0",
    "packages": [
        {
            "name" : "thermocontrol",
            "version" : "1.0.1"
        },
        {
            "name" : "tempreport",
            "version" : "2.0.0"
        }
    ]
}

每個 apt 物件都會包括下列屬性:

  • 名稱:此 apt 資訊清單的名稱。 這可以是對您案例有意義的任何名稱或識別碼。 例如: contoso-iot-edge
  • 版本:此 apt 資訊清單的版本號碼。 例如: 1.0.0.0
  • 套件:包含套件特定屬性的物件清單。
    • 名稱:套件的名稱或識別碼。 例如: iotedge
    • 版本:套件所需的版本準則。 例如: 1.0.8-2 。 版本值不應該包含等號。 如果省略版本,將會安裝指定套件的最新可用版本。

目前僅支援確切的版本號碼。 版本號碼是所需的 Debian 套件版本,格式為 [epoch:]upstream_version[-debian_revision],其中 epoch 是不帶正負號的整數,而 upstream_version 可以包含英數字元和字元,例如 "."、"+"、"-" 和 "~"。 應以數字起首。

注意

'1.0.8' 等於 '1.0.8-0'

例如,"name":"iotedge""version":"1.0.8-2" 相當於使用命令 apt-get install iotedge=1.0.8-2 來安裝套件

如需如何建立 Debian 套件版本的詳細資訊,請參閱 Debian 原則手冊

注意

apt 套件管理員在自動解析要安裝的相依套件時,會忽略套件所提供的版本設定需求。 除非提供相依套件的明確版本,否則即使套件本身可能會對特定版本指定嚴格需求 (=),也將使用最新版本。 這種自動解析可能會導致未滿足相依性的相關錯誤。 深入瞭解

如果您要更新特定版本的 Azure IoT Edge 安全性精靈,則應在 apt 資訊清單中納入所需的 aziot-edge 套件版本及其相依的 aziot-identity-service 套件。 如需詳細資訊,請參閱如何更新 IoT Edge

APT 資訊清單可用來更新裝置更新代理程式及其相依性。 列出 APT 資訊清單中的裝置更新代理程式名稱和所需的版本,就像您對任何其他套件所做的一樣。 然後,您可以透過 IoT 中樞裝置更新管線來匯入並部署這個 APT 資訊清單。

移除套件

您也可以使用 APT 資訊清單,從您的裝置移除已安裝的套件。 單一 apt 資訊清單可用來移除、新增及更新多個套件。

若要移除套件,請在套件名稱後面新增減號 "-"。 您不應納入要移除的套件版本號碼。 透過 apt 資訊清單移除套件,並不會移除其相依性和設定。

例如:

{
    "name": "contoso-video",
    "version": "2.0.0.1",
    "packages": [
        {
            "name" : "foo-"
        }
    ]
}

此 apt 資訊清單會從部署的裝置中移除套件 "foo"。

Apt 資訊清單的安裝準則是 <name>-<version>,其中 <name> 是 apt 資訊清單名稱,而 <version> 是 apt 資訊清單的版本。 例如: contoso-iot-edge-1.0.0.0

建立 apt 資訊清單的指導方針

建立 apt 資訊清單時,請記住幾項指導方針:

  • 請務必確定 apt 資訊清單是格式正確的 JSON 檔案。
  • 每個 apt 資訊清單都應該有唯一的版本。 請嘗試使用標準化方法來遞增 apt 資訊清單的版本,使其對您的案例有意義,而且可以輕鬆遵循。
  • 針對每個個別套件的預期狀態,請指定您想要在裝置上安裝的套件確切名稱和版本。 請一定要針對您想要作為套件來源的套件存放庫來驗證這些值。
  • 確定 apt 資訊清單中的套件是依照應該安裝/移除的順序列出。
  • 請一定要在測試裝置上驗證套件安裝,以確保結果理想。
  • 安裝特定版本的套件時 (例如,iotedge 1.0.9-1),最佳做法是在 apt 資訊清單中也列出安裝的相依套件明確版本 (例如,libiothsm 1.0.9-1)
  • 雖然非強制性,但務必確認您的 apt 資訊清單是採用累積更新,以避免讓裝置處於未知的狀態。 累積更新可確保您在意的每個套件仍會有需要的版本,即使裝置因安裝失敗或離線而略過 apt 更新部署

例如:

基本 apt 資訊清單

{
    "name": "contoso-iot-edge",
    "version": "1.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        }
    ]
}

錯誤更新

此更新包含 bar 套件,但不包含 foo 套件。

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

良好更新

此更新包含 foo 套件,也包含 bar 套件。

{
    "name": "contoso-iot-edge",
    "version": "2.0",
    "packages": [
        {
            "name": "foo",
            "version": "1.0.1"
        },
        {
            "name": "bar",
            "version": "3.0.2"
        }
    ]
}

下一步

將更新匯入至裝置更新