apt 清单是一个 JSON 文件,描述 apt 更新处理程序所需的更新详细信息。 可以将此文件导入到 IoT 中心的设备更新中,就像任何其他更新一样。
有关详细信息,请参阅 导入 IoT 中心的设备更新。
概述
当将 apt 清单作为更新传送给设备更新代理时,代理将处理该清单并执行必要的作业。 这些操作包括从指定的存储库下载并安装 APT 清单文件中指定的包及其依赖项。
设备更新支持 apt updateType 和 apt 更新处理程序。 借助这种支持,Device Update 代理可以评估已安装的 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
。 -
包:包含特定于包的属性的对象列表。
-
名称:包的名称或 ID。 例如,
iotedge
。 -
版本:包的所需版本条件。 例如,
1.0.8-2
。 版本值不应包含等于号。 如果省略版本,将安装指定包的最新可用版本。
-
名称:包的名称或 ID。 例如,
目前仅支持确切的版本号。 版本号是所需的 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>
是 apt 清单的版本。 例如,contoso-iot-edge-1.0.0.0
。
关于创建恰当清单的指南
创建适当的清单时,需要牢记一些准则:
- 始终确保 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"
}
]
}