Azure Device Update for IoT Hub apt manifest
Este artigo descreve o manifesto apt, um arquivo JSON que descreve os detalhes de atualização exigidos pelo manipulador de atualização apt. Pode importar este ficheiro para a Atualização de Dispositivo como qualquer outra atualização. Para obter mais informações, consulte Importar uma atualização para a Atualização de dispositivo.
Quando você entrega um manifesto apt a um agente de Atualização de Dispositivo como uma atualização, o agente processa o manifesto e executa as operações necessárias. Essas operações incluem baixar e instalar os pacotes especificados no arquivo de manifesto apt e suas dependências a partir de um repositório designado.
A Atualização de Dispositivo suporta o tipo de atualização apt e o manipulador de atualização. Este suporte permite que o agente de Atualização de Dispositivo avalie os pacotes Debian instalados e atualize os pacotes necessários.
Você pode usar um manifesto apt para atualizar o próprio agente de Atualização de Dispositivo e suas dependências. Liste o nome do agente de atualização de dispositivo e a versão desejada no manifesto apt como faria com qualquer outro pacote. Em seguida, você pode importar esse manifesto apt e implantá-lo através do pipeline de Atualização de Dispositivo.
Esquema
Um arquivo de manifesto apt é um arquivo JSON com um esquema versionado.
{
"name": "<name>",
"version": "<version>",
"packages": [
{
"name": "<package name>",
"version": "<version specifier>"
}
]
}
Por exemplo:
{
"name": "contoso-iot-edge",
"version": "1.0.0.0",
"packages": [
{
"name" : "thermocontrol",
"version" : "1.0.1"
},
{
"name" : "tempreport",
"version" : "2.0.0"
}
]
}
Cada manifesto apt inclui as seguintes propriedades:
-
Nome: Um nome para este manifesto apt, que pode ser qualquer nome ou ID significativo que se adapte ao seu cenário. Por exemplo,
contoso-iot-edge
. -
Versão: Um número de versão para este manifesto apt, por exemplo
1.0.0.0
. -
Pacotes: uma lista de objetos que contêm propriedades específicas do pacote.
-
Nome: O nome ou ID do pacote, por exemplo
iotedge
. -
Versão: Os critérios de versão do pacote desejados, por exemplo,
1.0.8-2
.
-
Nome: O nome ou ID do pacote, por exemplo
Controlo de Versão
O manifesto apt suporta apenas números de versão exatos. O número da versão é a versão desejada do pacote Debian no formato, onde epoch
é um int não assinado e upstream_version
começa com um dígito e pode incluir alfanuméricos e caracteres como .
, ,
, +
, -
, e ~
.<epoch>:<upstream_version>-<debian_revision>
O valor da versão não deve conter um sinal de igual.
Por exemplo, "name":"iotedge"
e "version":"1.0.8-2"
é equivalente a instalar um pacote usando o comando apt-get install iotedge=1.0.8-2
. Versão 1.0.8
é igual a 1.0.8-0
.
Se a versão for omitida, a Atualização de Dispositivo instalará a versão mais recente disponível do pacote especificado. Para mais informações sobre como os pacotes Debian são versionados, veja o manual de políticas Debian.
Nota
O gerenciador de pacotes apt ignora os requisitos de versionamento fornecidos por um pacote quando os pacotes dependentes a serem instalados estão sendo resolvidos automaticamente. A menos que versões explícitas de pacotes dependentes sejam fornecidas, eles usam o mais recente, mesmo que o próprio pacote possa especificar um requisito estrito (=) em uma determinada versão. Essa resolução automática pode levar a erros em relação a uma dependência não atendida.
Portanto, quando você instala uma versão específica de um pacote, é melhor incluir também as versões explícitas dos pacotes dependentes a serem instalados. Para obter mais informações, consulte apt-get não resolvendo corretamente uma dependência em uma versão fixa em um pacote Debian/Ubuntu.
Se você atualizar uma versão específica do daemon de segurança do Azure IoT Edge, deverá incluir a aziot-edge
versão desejada do pacote e seu pacote dependente aziot-identity-service
em seu manifesto apt. Para obter mais informações, consulte Como atualizar o IoT Edge.
Critérios de instalação
O valor de critério instalado recomendado para um manifesto apt é <name>-<version>
, onde <name>
é o nome do manifesto apt e <version>
é sua versão. Por exemplo, contoso-iot-edge-1.0.0.0
.
Remoção de pacotes
Você também pode usar um manifesto apt para remover pacotes instalados dos dispositivos. Você pode usar um único manifesto apt para remover, adicionar e atualizar vários pacotes.
Para remover um pacote, adicione um sinal -
de subtração após o nome do pacote. Não inclua um número de versão para os pacotes que você está removendo. Remover um pacote através de um manifesto apt não remove suas dependências e configurações.
Por exemplo, o manifesto apt a seguir remove o pacote contoso1
de todos os dispositivos nos quais ele é implantado.
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "contoso1-"
}
]
}
Diretrizes de criação de manifesto do Apt
Tenha em mente as seguintes diretrizes ao criar um manifesto apt:
Certifique-se de que o manifesto apt é um arquivo JSON bem formado.
Dê a cada manifesto apt uma versão única. Tente criar uma metodologia padronizada para incrementar a versão do manifesto apt, para que faça sentido para seus cenários e seja fácil de seguir.
Para o estado desejado de cada pacote individual, especifique o nome exato e a versão do pacote que você deseja instalar no seu dispositivo. Sempre valide os valores em relação ao conteúdo do repositório do pacote de origem.
Liste os pacotes no manifesto apt na ordem em que devem ser instalados ou removidos.
Sempre valide a instalação de pacotes em um dispositivo de teste para garantir o resultado desejado.
Quando você instala uma versão específica de um pacote, por exemplo
iotedge 1.0.9-1
, inclua também as versões explícitas dos pacotes dependentes a serem instalados, por exemplolibiothsm 1.0.9-1
.Embora não seja necessário, sempre tornar o seu apt manifesto cumulativo evita colocar os dispositivos em um estado desconhecido. Uma atualização cumulativa garante que seus dispositivos tenham a versão desejada de todos os pacotes relevantes, mesmo que o dispositivo tenha ignorado uma atualização devido a uma falha de instalação ou estar offline.
Por exemplo, considere o seguinte manifesto apt base:
{ "name": "contoso-iot-edge", "version": "1.0", "packages": [ { "name": "contoso1", "version": "1.0.1" } ] }
A seguinte atualização da versão 2.0 inclui o
contoso2
pacote, mas não ocontoso1
pacote. Todos os dispositivos que recebem a atualização 2.0 podem não ter ocontoso1
pacote.{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso2", "version": "3.0.2" } ] }
A seguinte atualização cumulativa da versão 2.0 inclui os
contoso1
pacotes econtoso2
:{ "name": "contoso-iot-edge", "version": "2.0", "packages": [ { "name": "contoso1", "version": "1.0.1" }, { "name": "contoso2", "version": "3.0.2" } ] }