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