Обновление устройств Azure для Центр Интернета вещей манифеста apt
В этой статье описывается манифест 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
.
Если версия опущена, обновление устройства устанавливает последнюю доступную версию указанного пакета. Дополнительные сведения о том, как версии пакетов Debian см. в руководстве по политике Debian.
Примечание.
Диспетчер пакетов APT игнорирует требования управления версиями, заданные пакетом, если зависимые пакеты для установки разрешаются автоматически. Если не указаны явные версии зависимых пакетов, они используют последнюю версию, даже если сам пакет может указать строгое требование (=) для заданной версии. Это автоматическое разрешение может привести к ошибкам в отношении несопоставленной зависимости.
Поэтому при установке определенной версии пакета рекомендуется также включить явные версии зависимых пакетов. Дополнительные сведения см. в статье apt-get неправильное разрешение зависимости от фиксированной версии в пакете Debian/Ubuntu.
При обновлении определенной версии управляющей программы безопасности Azure IoT Edge необходимо включить нужную версию aziot-edge
пакета и его зависимый aziot-identity-service
пакет в манифест apt. Дополнительные сведения см. в статье Обновление 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" } ] }