共用方式為


裝置更新 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指令清單的名稱。 這可以是任何對您的情境有意義的名稱或ID。 例如: contoso-iot-edge
  • 版本:此 apt 指令清單的版本號碼。 例如: 1.0.0.0
  • 套件:包含套件特定屬性的物件清單。
    • 名稱:封裝的名稱或標識碼。 例如: iotedge
    • 版本:套件所需的版本準則。 例如: 1.0.8-2 。 版本值不應該包含等號。 如果省略版本,則會安裝指定套件的最新可用版本。

目前僅支援確切的版本號碼。 版本號碼是所需的 Debian 套件版本,格式為 [epoch:]upstream_version[-debian_revision],其中 epoch 是一個不帶正負號的 int,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> 是該指令清單的版本。 例如: contoso-iot-edge-1.0.0.0

創建適合的清單文件的指導方針

建立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"
        }
    ]
}

後續步驟

匯入裝置更新的新版本