Manifesto do apt atualização de dispositivo
O manifesto apt é um ficheiro JSON que descreve os detalhes de atualização necessários pelo processador de atualizações apt. Este ficheiro pode ser importado para a Atualização de Dispositivos para Hub IoT tal como qualquer outra atualização.
Para obter mais informações, consulte Importar uma atualização para a Atualização de Dispositivos para Hub IoT.
Descrição Geral
Quando um manifesto apt é entregue a um agente de Atualização de Dispositivos como uma atualização, o agente processa o manifesto e realiza as operações necessárias. Estas operações incluem transferir e instalar os pacotes especificados no ficheiro de manifesto apt e as respetivas dependências a partir de um repositório designado.
A Atualização de Dispositivos suporta apt updateType e o processador de atualizações apt. Este suporte permite ao agente de Atualização de Dispositivos avaliar os pacotes Debian instalados e atualizar os pacotes necessários.
Esquema
Um ficheiro de manifesto apt é um ficheiro JSON com um esquema com versões.
{
"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: o nome deste manifesto apt. Pode ser qualquer nome ou ID relevante para os seus cenários. 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 pretendidos para o pacote. Por exemplo,
1.0.8-2
. O valor da versão não deve conter um sinal de igual. Se a versão for omitida, será instalada a versão mais recente disponível do pacote especificado.
-
Nome: o nome ou ID do pacote. Por exemplo,
Atualmente, apenas é suportado o número exato da versão. O número da versão é a versão do pacote Debian pretendida no formato [epoch:]upstream_version[-debian_revision], em que a época é um int não assinado e upstream_version pode incluir alfanuméricos e carateres como ".""+","-" e "~". Deve começar com um dígito.
Nota
'1.0.8' é igual a '1.0.8-0'
Por exemplo, "name":"iotedge"
e "version":"1.0.8-2"
é equivalente a instalar um pacote com o comando apt-get install iotedge=1.0.8-2
Para obter mais informações sobre como os pacotes Debian são versados, veja o manual de política de Debian
Nota
O gestor de pacotes apt ignora os requisitos de controlo de versões fornecidos por um pacote quando os pacotes dependentes a instalar estão a ser resolvidos automaticamente. A menos que sejam fornecidas versões explícitas de pacotes dependentes, utilizarão as versões mais recentes, embora o próprio pacote possa especificar um requisito estrito (=) numa determinada versão. Esta resolução automática pode originar erros relacionados com uma dependência não cumprida. Saiba mais
Se estiver a atualizar uma versão específica do daemon de segurança do Azure IoT Edge, deve incluir a versão pretendida do pacote e o aziot-edge
respetivo pacote dependente aziot-identity-service
no manifesto apt.
Para obter mais informações, veja Como atualizar IoT Edge.
Um manifesto apt pode ser utilizado para atualizar o agente da Atualização de Dispositivos e as respetivas dependências. Liste o nome do agente de atualização do dispositivo e a versão pretendida no manifesto apt, como faria para qualquer outro pacote. Em seguida, este manifesto apt pode ser importado e implementado através da Atualização de Dispositivos para Hub IoT pipeline.
A remover pacotes
Também pode utilizar um manifesto apt para remover pacotes instalados do seu dispositivo. Um único manifesto apt pode ser utilizado 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 deve incluir um número de versão para os pacotes que está a remover. Remover um pacote através de um manifesto apt não remove as respetivas dependências e configurações.
Por exemplo:
{
"name": "contoso-video",
"version": "2.0.0.1",
"packages": [
{
"name" : "foo-"
}
]
}
Este manifesto apt removerá o pacote "foo" dos dispositivos para os qual está implementado.
Valor recomendado para critérios instalados
Os critérios instalados para um manifesto apt é <name>-<version>
o <name>
nome do manifesto apt e <version>
é a versão do manifesto apt. Por exemplo, contoso-iot-edge-1.0.0.0
.
Diretrizes sobre a criação de um manifesto apt
Ao criar o manifesto apt, existem algumas diretrizes a ter em conta:
- Certifique-se sempre de que o manifesto apt é um ficheiro json bem formado.
- Cada manifesto apt deve ter uma versão exclusiva. Tente criar uma metodologia padronizada para incrementar a versão do manifesto apt, para que faça sentido para os seus cenários e possa ser facilmente seguido.
- No que diz respeito ao estado pretendido de cada pacote individual, especifique o nome exato e a versão do pacote que pretende instalar no seu dispositivo. Valide sempre os valores em relação ao repositório de pacotes que pretende utilizar como a origem do pacote.
- Certifique-se de que os pacotes no manifesto apt estão listados pela ordem em que devem ser instalados/removidos.
- Valide sempre a instalação de pacotes num dispositivo de teste para garantir que o resultado é desejado.
- Ao instalar uma versão específica de um pacote (por exemplo,
iotedge 1.0.9-1
), é melhor prática ter também no manifesto apt as versões explícitas dos pacotes dependentes a instalar (por exemplo,libiothsm 1.0.9-1
) - Embora não esteja mandatado, certifique-se sempre de que o seu manifesto apt é cumulativo para evitar colocar o seu dispositivo num estado desconhecido. Uma atualização cumulativa garantirá que os seus dispositivos têm a versão pretendida de cada pacote que lhe interessa, mesmo que o dispositivo tenha ignorado uma implementação de atualização apt devido a uma falha na instalação ou tenha sido retirado offline
Por exemplo:
Base apt manifest
{
"name": "contoso-iot-edge",
"version": "1.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
}
]
}
Atualização incorreta
Esta atualização inclui o pacote de barras, mas não o pacote foo.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "bar",
"version": "3.0.2"
}
]
}
Boa atualização
Esta atualização inclui o pacote foo e também inclui o pacote de barras.
{
"name": "contoso-iot-edge",
"version": "2.0",
"packages": [
{
"name": "foo",
"version": "1.0.1"
},
{
"name": "bar",
"version": "3.0.2"
}
]
}