裝置更新 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"
}
]
}