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.

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.

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

Passos seguintes

Importar uma atualização para a Atualização de Dispositivos