IoT 中樞 apt 指令清單的 Azure 裝置更新
本文說明 apt 指令清單,這是一個 JSON 檔案,描述 apt 更新處理程式所需的更新詳細數據。 您可以將此檔案匯入裝置更新,就像任何其他更新一樣。 如需詳細資訊,請參閱 將更新匯入至裝置更新。
當您將 apt 指令清單傳遞至裝置更新代理程式做為更新時,代理程式會處理指令清單並執行必要的作業。 這些作業包括從指定的存放庫下載並安裝 apt 資訊清單檔案中指定的套件及其相依性。
裝置更新支援apt更新類型和 更新處理程式。 此支援可讓裝置更新代理程式評估已安裝的 Debian 套件,並更新必要的套件。
您可以使用 apt 指令清單來更新裝置更新代理程式本身及其相依性。 列出 apt 指令清單中的裝置更新代理程式名稱和所需的版本,如同任何其他套件一樣。 然後,您可以匯入此 apt 指令清單,並透過裝置更新管線加以部署。
結構描述
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
。
-
名稱:套件名稱或識別碼,例如
版本控制
apt 指令清單僅支援確切的版本號碼。 版本號碼是所需的 Debian 套件版本,格式 <epoch>:<upstream_version>-<debian_revision>
為 ,其中 epoch
是未簽署的 int, upstream_version
開頭為數位,而且可以包含英數位元和字元,例如 .
、 ,
、 +
、 -
和 ~
。 版本值不應該包含等號。
例如, "name":"iotedge"
和 "version":"1.0.8-2"
相當於使用 命令 apt-get install iotedge=1.0.8-2
安裝套件。 版本 1.0.8
等於 1.0.8-0
。
如果省略版本,Device Update 會安裝指定套件的最新可用版本。 如需如何設定 Debian 套件版本的詳細資訊,請參閱 Debian 原則手冊。
注意
apt 套件管理員在自動解析要安裝的相依套件時,會忽略套件所提供的版本設定需求。 除非指定相依套件的明確版本,否則它們會使用最新的套件,即使套件本身可能會在指定版本上指定嚴格的需求(=)。 這種自動解析可能會導致未滿足相依性的相關錯誤。
因此,當您安裝特定版本的套件時,最好也包含要安裝的相依套件明確版本。 如需詳細資訊,請參閱 apt-get 無法正確解析 Debian/Ubuntu 套件中固定版本的相依性。
如果您更新 Azure IoT Edge 安全性精靈的特定版本,您應該在 apt 指令清單中包含所需的套件版本 aziot-edge
及其相依 aziot-identity-service
套件。 如需詳細資訊,請參閱如何更新 IoT Edge。
已安裝的準則
apt 指令清單的建議已安裝準則值是 <name>-<version>
,其中 <name>
是 apt 指令清單的名稱,而 <version>
是其版本。 例如: contoso-iot-edge-1.0.0.0
。
套件移除
您也可以使用 apt 指令清單,從裝置移除已安裝的套件。 您可以使用單一 apt 指令清單來移除、新增及更新多個套件。
若要移除套件,請在套件名稱後面新增減號 -
。 請勿包含您要移除之套件的版本號碼。 透過 apt 資訊清單移除套件,並不會移除其相依性和設定。
例如,下列 apt 指令清單會從部署至的任何裝置中移除套件 contoso1
。
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "contoso1-"
}
]
}
Apt 指令清單建立指導方針
當您建立 apt 指令清單時,請記住下列指導方針:
請確定 apt 指令清單是格式正確的 JSON 檔案。
為每個 apt 指令清單提供唯一的版本。 嘗試想出標準化的方法,以遞增apt指令清單的版本,因此對於您的案例來說相當合理,而且很容易遵循。
針對每個個別套件的預期狀態,請指定您想要在裝置上安裝的套件確切名稱和版本。 一律針對來源套件存放庫的內容驗證值。
依應安裝或移除的順序列出 apt 指令清單中的套件。
請務必驗證測試裝置上的套件安裝,以確保所需的結果。
當您安裝特定版本的套件時,例如
iotedge 1.0.9-1
,也包含要安裝的相依套件明確版本,例如libiothsm 1.0.9-1
。雖然並非必要,但請一律讓您的apt指令清單累計避免讓裝置進入未知狀態。 累積更新可確保您的裝置擁有每個相關套件所需的版本,即使裝置因為安裝失敗或離線而略過更新也一樣。
例如,請考慮下列基底 apt 指令清單:
{ "name": "contoso-iot-edge", "version": "1.0", "packages": [ { "name": "contoso1", "version": "1.0.1" } ] }
下列 2.0 版更新包含
contoso2
套件,但不包含contoso1
套件。 接收 2.0 更新的所有裝置可能都沒有contoso1
套件。{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso2", "version": "3.0.2" } ] }
下列 2.0 版累積更新同時
contoso1
包含 和contoso2
套件:{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso1", "version": "1.0.1" }, { "name": "contoso2", "version": "3.0.2" } ] }